好的,我在这里和其他地方读到了关于标记的内容,用户输入和db之间的步骤通常如下所示
但对我来说,做以下事情更有意义:
我是不是遗漏了什么?在我看来,这几乎是防伪的。
发布于 2011-07-25 22:55:50
请查看此链接:
http://michelf.com/weblog/2010/markdown-and-xss/
> hello <a name="n"
> href="javascript:alert('xss')">*you*</a>化作
<blockquote>
<p>hello <a name="n"
href="javascript:alert('xss')"><em>you</em></a></p>
</blockquote>∴转换为HTML后,您必须对其进行净化。
发布于 2009-11-06 21:40:27
你的建议有两个问题:
在web上有一些关于输出消毒的好资源:
发布于 2009-11-06 21:43:24
当然,删除/转义所有标记将使标记语言更加安全。然而,Markdown的全部意义在于它允许用户包括任意HTML标记以及它自己的标记形式(*)。当您允许HTML时,无论如何您必须清除/白名单输出,所以您最好在标记转换之后进行,以捕获所有内容。
*:这是一个我完全不同意的设计决定,而且我认为这个决定并没有被证明是有用的,但它是一个设计决定,而不是一个错误。
顺便说一句,步骤3应该是“输出到页面”;这通常发生在输出阶段,数据库包含原始提交的文本。
https://stackoverflow.com/questions/1690601
复制相似问题