我打赌我在这里用错了东西..。
我的MVC3应用程序使用帕吉敦提供javascript文本编辑器、标记转换器和实时预览。我使用它的"santizer“对象来删除指令中建议的潜在危险代码--您可以在演示中看到它的工作。
javascript代码如下所示:
(function () {
var converter1 = Markdown.getSanitizingConverter();
var editor1 = new Markdown.Editor(converter1);
editor1.run();
})();此代码将标记的textarea标记转换为编辑器,并使用santizing转换器来去除坏东西。在某些方面,它似乎正在起作用。示例:
marquee标记,就像在演示中一样,它被正确地剥离了。<p style="font-size:40em;">Super Big Text</p>被剥离为Super Big Text但有些事不对..。当我插入像这样的假javascript时:
TEXT `<script type="text/javascript">alert("gotcha!");</script>` MORE TEXT然后把表格贴出来,用黄色的屏幕显示死亡:
Request Validation has detected a potentially dangerous client input value, and processing of the request has been aborted.
这个字符串还没有像&lgt;script那样安全地编码.等等?
问题:我缺少什么来确保代码块和内联代码被正确地转换,以便它们可以作为一个安全的字符串发布到服务器上?
发布于 2012-01-31 10:38:23
我缺少什么来确保正确转换代码块和内联代码,以便将它们作为一个安全的字符串发布到服务器上?
没什么。或者至少什么也没有,假设您正在创建具有正确输出转义的textarea,如果使用Web窗体或MVC控件,您就会这样做。
无论应用程序是正确地处理输出转义还是易受攻击,都会出现类似元素标记的任何和所有输入内容的YSOD。它不是XSS问题的指示,它经常发生。
如果您希望允许包含类似元素标记的数据的用户输入(而且这没有本质上的危险--您只需要正确地获得输出转义),那么关闭请求验证。作为一个真正的安全特性,完全是假的,它只会给您一种虚假的安全感;微软正在推动它,这是令人失望的,因为它暴露了对HTML注入是什么的致命误解。
不幸的是,在ASP.NET 4下,禁用它会变得更加恼人。您必须用<httpRuntime requestValidationMode="2.0" />重置旧模型,然后将ValidateRequest="false"添加到页面中。
https://stackoverflow.com/questions/9071369
复制相似问题