我使用HTML过滤,以防止XSS攻击我的应用程序。 目前,我从净化所见即所得的编辑器的内容,因为这是允许用户使用XHTML标记的地方。
我的问题是,我应该在登录认证系统使用HTML净化器还对用户名和密码(或在注册网页的输入字段,如电子邮件,姓名,地址等)? 是否有XSS攻击有一个机会?
我使用HTML过滤,以防止XSS攻击我的应用程序。 目前,我从净化所见即所得的编辑器的内容,因为这是允许用户使用XHTML标记的地方。
我的问题是,我应该在登录认证系统使用HTML净化器还对用户名和密码(或在注册网页的输入字段,如电子邮件,姓名,地址等)? 是否有XSS攻击有一个机会?
你应该净化任何将永远不可能在页面上显示。 由于与XSS攻击,黑客把在<script>
可以链接到其他网站的广告代码或其他恶意代码。
密码和电子邮件应罚款。 密码绝不应该显示和电子邮件应该有自己的验证,以确保他们在正确的格式。
最后,一定要记住把在ヶ辆()上的内容。
呵呵..看看filter_var以及。 过滤变量的非常好的方式。
存在XSS风险究竟在哪儿由一个用户输入的数据可以被其他用户查看。 即使这个数据目前无法查看,不要认为需要做到这一点不会出现。
至于用户名和密码去,你永远不应该显示密码,甚至可以将其存储在可显示的形式(即用它encyrpt sha1()
对于用户名,有像合法字符的限制[A-Za-z0-9_]
最后,对方的回答表明,用你的语言HTML实体编码功能对于可能包含保留任何输入的数据或特殊的HTML字符,这可防止显示时导致语法错误此数据。
不,我不会对用户名和密码登录身份验证过程中使用HTMLPurifier。 在我appllications我使用字母数字的用户名和一个输入验证过滤器,并与ENT_QUOTES用htmlspecialchars显示它们。 这是非常有效的,比HTMLpurifier快地狱很多。 我还没有看到使用字母数字字符串,XSS攻击。 和BTW反正过滤字母数字内容时,因此,如果您通过一个字母数字滤波器强制输入的字符串则没有一点与HTMLpurifier显示它HTMLPurifier是没用的。 当涉及到密码,则永远不应该在消除XSS的可能性首先被显示给任何人。 如果因为某些反常的原因,你要显示的密码,那么你应该以这样的方式设计应用程序,它允许只有口令的所有者能够看到它,否则你拧大的时间和XSS是最少的您的后顾之忧!
HTML净化器采用HTML作为输入,并产生HTML作为输出。 它的目的是让用户与一些标签输入html,属性和价值,同时过滤掉其他人。 它使用白名单,以防止可能包含脚本的任何数据。 因此,这是像一个所见即所得的编辑器非常有用。
另一方面,用户名和密码不是HTML。 他们是纯文本 ,所以HTML净化器是不是一种选择。 想在这里使用HTML过滤要么破坏数据,或允许XSS攻击。
例如,它允许通过改变以下中,当如在一些元素的属性值插入这可能会导致问题的XSS:
" onclick="javascript:alert()" href="
或者,如果有人试图在他们的密码使用特殊符号,而进入:
<password
那么他们的密码会变成空白,并使其更容易被猜中。
相反,你应该编码的文本。 所需的编码依赖于上下文,但您可以使用htmlentities
输出这些值时,如果你坚持规则#0和规则#1,在OWASP XSS预防小抄