Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用标记(Pagedown)处理代码块_Javascript_Html_Security_Post_Markdown - Fatal编程技术网

Javascript 使用标记(Pagedown)处理代码块

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);

我打赌我在这里用错了什么东西

我的MVC3应用程序用于提供javascript文本编辑器、标记转换器和实时预览。我使用它的“santizer”对象来剥离潜在的危险代码,正如指令中所建议的那样——您可以在中看到它在工作

javascript代码如下所示:

(function () {
    var converter1 = Markdown.getSanitizingConverter();
    var editor1 = new Markdown.Editor(converter1);
    editor1.run();
})();
这段代码将标记的
textarea
标记转换为编辑器,并使用santizing转换器去除不好的内容。在某些方面,它似乎起了作用。示例:

  • marquee
    标记,因为在演示中它被正确剥离
  • 超级大文本被剥离为超级大文本
但有些事情是不正确的。。。当我插入一个伪javascript时,如下所示:

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平台应用程序,因此可能完全是浪费精力。