【问题标题】:Handling Code Blocks with Markdown (Pagedown)使用 Markdown 处理代码块(Pagedown)
【发布时间】:2012-01-30 21:54:57
【问题描述】:

我打赌我在这里使用了不正确的东西......

我的 MVC3 应用程序使用 Pagedown 来提供 JavaScript 文本编辑器、降价转换器和实时预览。我使用它的“santizer”对象来去除潜在危险的代码,就像指令中所建议的那样——你可以在demo 中看到它的工作原理。

javascript 代码如下所示:

(function () {
    var converter1 = Markdown.getSanitizingConverter();
    var editor1 = new Markdown.Editor(converter1);
    editor1.run();
})();

此代码将标记的textarea 标记转换为编辑器,并使用消毒转换器去除不良内容。在某些方面,它似乎在起作用。示例:

  • 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.

这个字符串是否还没有像&amp;lgt;script...等那样安全编码?

问题:我缺少什么来确保正确转换代码块和内联代码以便将它们作为安全字符串发布到服务器?

【问题讨论】:

    标签: javascript html security post markdown


    【解决方案1】:

    为了确保正确转换代码块和内联代码以便将它们作为安全字符串发布到服务器,我缺少什么?

    什么都没有。或者至少可能什么都没有,假设您正在创建具有正确输出转义的文本区域,如果使用 Web 表单或 MVC 控件,您将是这样。

    YSOD 出现在任何和所有看起来像元素标记的输入内容中,无论您的应用程序是否正确处理输出转义或易受攻击。这并不表示 XSS 问题,它一直在发生。

    如果您想允许包含看起来像元素标记的数据的用户输入(这并没有本质上的危险 - 您只需正确转义输出),请关闭请求验证。作为真正的安全功能,它完全是伪造的,只会给您一种虚假的安全感;令人失望的是,微软正在推动它,因为它暴露了对 HTML 注入是什么的致命误解。

    不幸的是,在 ASP.NET 4 下禁用它会变得更加烦人。您必须使用 &lt;httpRuntime requestValidationMode="2.0" /&gt; 重置旧模型,然后将 ValidateRequest="false" 添加到页面。

    【讨论】:

    • 谢谢。几个问题。使用 @Html.TextAreaFor() 帮助器时,如何确定我的文本被正确转义?其次,您是否有任何我可以阅读的关于请求验证的虚假性的文档/参考资料?它表现得非常扎实,但我很想学习内脏,也许自己动手。只是不想关掉它,除非绝对必要。
    • 默认情况下,MVC HTML 助手都会转义它们的属性,虽然是的,这并没有很好地记录(在他们的开发过程中并非总是如此!)。如果您正在使用 ASPX 并希望确定,使用自动转义 &lt;%: 输出语法来编写 HTML 帮助程序以及一般转义文本是安全的。辅助输出不会被双重转义,因为它被包装为HtmlString,这会使额外的转义步骤短路。在 Razor 中,@-output 的行为相同。
    • 关于 ASP.NET 的 RV 的具体参考资料,我很难找到不仅仅是我在咆哮的 Google 结果。 ;-) OWASP 的XSS cheat sheet 很好地概述了要理解的背景,请特别参阅“但是,输入验证不是注入攻击的好解决方案......”解释。
    • 输入验证是您必须根据预期的输入数据格式定制的东西,如果您希望它运行良好; ASP.NET RV 是最愚蠢的粗略方法,它会干扰完美的输入(如这里),但实际上并不能保护您免受与其弱绘制的“看起来有点像 HTML”不匹配的真正攻击元素”标志。
    • 再次感谢您提供的信息。昨晚我偷看助手内部并注意到了这一点。自己找不到任何文档。我也会看一下 XSS 备忘单,因为我看到“广泛的刷子”保护可能是浪费时间。我们的应用程序也是一个 Intranet 平台应用程序,因此可能完全是浪费精力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    相关资源
    最近更新 更多