one*_*mer 2 html javascript security markdown post
我打赌我在这里错误地使用了一些东西......
我的MVC3应用程序使用Pagedown来提供javascript文本编辑器,降价转换器和实时预览.我使用它的"santizer"对象来剥离潜在危险的代码,就像在指令中建议的那样 - 你可以在演示中看到它.
javascript代码如下所示:
(function () {
var converter1 = Markdown.getSanitizingConverter();
var editor1 = new Markdown.Editor(converter1);
editor1.run();
})();
Run Code Online (Sandbox Code Playgroud)
此代码将标记的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
Run Code Online (Sandbox Code Playgroud)
并张贴表格,它以黄色的死亡屏幕轰炸:
Request Validation has detected a potentially dangerous client input value, and processing of the request has been aborted.
这个字符串是否已经安全编码,如&lgt;script
...等?
问题:我缺少什么来确保代码块和内联代码被正确转换,以便它们可以作为安全字符串发布到服务器?
我缺少什么来确保代码块和内联代码被正确转换,以便它们可以作为安全字符串发布到服务器?
没有.或者至少可能没有,假设您正在使用正确的输出转义创建textarea,如果使用Web窗体或MVC控件,您将会使用它.
该YSOD出现任何和看起来像元素的标记,所有输入的内容,无论您的应用程序是否处理正确输出转义或脆弱.它并不表示XSS问题,而是一直发生.
如果您希望允许包含看起来像元素标记的数据的用户输入(并且没有任何本质上危险的 - 您只需要将输出转义为正确),请关闭"请求验证".它完全是一种真正的安全功能,只会给你一种虚假的安全感; 令人失望的是微软正在推动它,因为它背叛了对HTML注入的致命误解.
不幸的是,在ASP.NET 4下禁用它会更加恼人.您必须重置旧模型,<httpRuntime requestValidationMode="2.0" />
然后添加ValidateRequest="false"
到页面.
归档时间: |
|
查看次数: |
1073 次 |
最近记录: |