Javascript 使用标记(Pagedown)处理代码块
我打赌我在这里用错了什么东西 我的MVC3应用程序用于提供javascript文本编辑器、标记转换器和实时预览。我使用它的“santizer”对象来剥离潜在的危险代码,正如指令中所建议的那样——您可以在中看到它在工作 javascript代码如下所示:Javascript 使用标记(Pagedown)处理代码块,javascript,html,security,post,markdown,Javascript,Html,Security,Post,Markdown,我打赌我在这里用错了什么东西 我的MVC3应用程序用于提供javascript文本编辑器、标记转换器和实时预览。我使用它的“santizer”对象来剥离潜在的危险代码,正如指令中所建议的那样——您可以在中看到它在工作 javascript代码如下所示: (function () { var converter1 = Markdown.getSanitizingConverter(); var editor1 = new Markdown.Editor(converter1);
(function () {
var converter1 = Markdown.getSanitizingConverter();
var editor1 = new Markdown.Editor(converter1);
editor1.run();
})();
这段代码将标记的textarea
标记转换为编辑器,并使用santizing转换器去除不好的内容。在某些方面,它似乎起了作用。示例:
标记,因为在演示中它被正确剥离marquee
- 超级大文本被剥离为超级大文本
TEXT `<script type="text/javascript">alert("gotcha!");</script>` MORE TEXT
TEXT`alert(“gotcha!”);`更多文本
然后贴上表格,它会被一个黄色的死亡屏幕炸开:
请求验证检测到潜在危险的客户端输入值,请求处理已中止。
此字符串是否尚未像&lgt;那样安全编码;脚本
。。。等等
问题:我缺少什么来确保代码块和内联代码正确转换,以便它们可以作为安全字符串发布到服务器
我缺少什么来确保代码块和内联代码被正确转换,以便它们可以作为安全字符串发布到服务器
没什么。或者至少可能什么都没有,假设您正在使用正确的输出转义创建textarea,如果使用Web窗体或MVC控件,您将使用正确的输出转义
对于任何和所有看起来像元素标记的输入内容,无论应用程序是否正确处理输出转义或是否易受攻击,都会显示YSOD。这并不表示XSS问题,它总是发生
如果您希望允许包含类似元素标记的数据的用户输入(并且不存在本质上的危险,您只需要正确地转义输出),请关闭请求验证。它是完全虚假的真正的安全功能,只会给你一种虚假的安全感;令人失望的是,微软正在推动它,因为它暴露了对HTML注入是什么的致命误解
不幸的是,在ASP.NET4下禁用它会变得更加恼人。您必须使用
重置旧型号,然后将ValidateRequest=“false”
添加到页面中。谢谢。有几个问题。在使用@Html.TextAreaFor()帮助程序时,如何确保文本被正确转义?第二,关于请求验证的虚假性,您是否有我可以阅读的文档/参考资料?它看起来很坚固,但我很想学习内脏,也许我自己也能。除非绝对必要,否则不想关闭它。MVC HTML助手在默认情况下都会转义它们的属性,尽管是的,这并没有很好的文档记录(在开发过程中也不总是如此!)。如果您使用的是ASPX,并且希望确保使用自动转义作为ASP.NET的RV上的引用是安全的,那么我很难找到不只是我在咆哮的Google结果。;-)OWASP很好地概述了需要理解的背景,特别是“但是,输入验证不是注射攻击的一个很好的解决方案…”的解释。如果您希望输入数据格式能够正常工作,则必须对输入验证进行定制;ASP.NET RV是一种最愚蠢的粗枝大叶方法,它会干扰完美的输入(如此处所示),但实际上不会保护您免受与其弱绘制的“看起来有点像HTML元素”标志不匹配的真正攻击。再次感谢您提供的补充信息。昨晚我偷看了一下助手的内部,注意到了这一点。我自己找不到任何文档。我还将看一看XSS的备忘单,因为我知道“一刀切”的保护可能是浪费时间。我们的应用程序也是一个intranet平台应用程序,因此可能完全是浪费精力。