HTML净化器 - 净化什么?(HTML Purifier - what to purify?)

2019-06-27 07:48发布

我使用HTML过滤,以防止XSS攻击我的应用程序。 目前,我从净化所见即所得的编辑器的内容,因为这是允许用户使用XHTML标记的地方。

我的问题是,我应该在登录认证系统使用HTML净化器还对用户名和密码(或在注册网页的输入字段,如电子邮件,姓名,地址等)? 是否有XSS攻击有一个机会?

Answer 1:

你应该净化任何将永远不可能在页面上显示。 由于与XSS攻击,黑客把在<script>可以链接到其他网站的广告代码或其他恶意代码。

密码和电子邮件应罚款。 密码绝不应该显示和电子邮件应该有自己的验证,以确保他们在正确的格式。

最后,一定要记住把在ヶ辆()上的内容。

呵呵..看看filter_var以及。 过滤变量的非常好的方式。



Answer 2:

存在XSS风险究竟在哪儿由一个用户输入的数据可以被其他用户查看。 即使这个数据目前无法查看,不要认为需要做到这一点不会出现。

至于用户名和密码去,你永远不应该显示密码,甚至可以将其存储在可显示的形式(即用它encyrpt sha1() 对于用户名,有像合法字符的限制[A-Za-z0-9_] 最后,对方的回答表明,用你的语言HTML实体编码功能对于可能包含保留任何输入的数据或特殊的HTML字符,这可防止显示时导致语法错误此数据。



Answer 3:

不,我不会对用户名和密码登录身份验证过程中使用HTMLPurifier。 在我appllications我使用字母数字的用户名和一个输入验证过滤器,并与ENT_QUOTES用htmlspecialchars显示它们。 这是非常有效的,比HTMLpurifier快地狱很多。 我还没有看到使用字母数字字符串,XSS攻击。 和BTW反正过滤字母数字内容时,因此,如果您通过一个字母数字滤波器强制输入的字符串则没有一点与HTMLpurifier显示它HTMLPurifier是没用的。 当涉及到密码,则永远不应该在消除XSS的可能性首先被显示给任何人。 如果因为某些反常的原因,你要显示的密码,那么你应该以这样的方式设计应用程序,它允许只有口令的所有者能够看到它,否则你拧大的时间和XSS是最少的您的后顾之忧!



Answer 4:

HTML净化器采用HTML作为输入,并产生HTML作为输出。 它的目的是让用户与一些标签输入html,属性和价值,同时过滤掉其他人。 它使用白名单,以防止可能包含脚本的任何数据。 因此,这是像一个所见即所得的编辑器非常有用。

另一方面,用户名和密码不是HTML。 他们是纯文本 ,所以HTML净化器是不是一种选择。 想在这里使用HTML过滤要么破坏数据,或允许XSS攻击。

例如,它允许通过改变以下中,当如在一些元素的属性值插入这可能会导致问题的XSS:

" onclick="javascript:alert()" href="

或者,如果有人试图在他们的密码使用特殊符号,而进入:

<password

那么他们的密码会变成空白,并使其更容易被猜中。

相反,你应该编码的文本。 所需的编码依赖于上下文,但您可以使用htmlentities输出这些值时,如果你坚持规则#0规则#1,在OWASP XSS预防小抄



文章来源: HTML Purifier - what to purify?