为了减少攻击者的可能性,在表格中只包含字母数字值是否值得?例如,在注册表单上的用户名和密码输入中,应用以下内容:
preg_replace("/[^A-Za-z0-9 ]/", '', $input);
当然,每次登录前都要执行相同的操作吗?
答案 0 :(得分:2)
通过删除任何字符,您实际上会削弱安全性。
删除任何字符绝对没有意义,而密码中的某些非alanum字符必需以提高安全性
请参阅我对“非法”字符主题的其他答案:https://stackoverflow.com/a/2995163/285587
答案 1 :(得分:1)
我们可以使用PHP prepared statements之类的其他方法来保护可能的SQL注入。但是,我们还必须确保不会将任意用户输入返回给服务器进行显示,否则可能会进行脚本注入。虽然如果从头开始设计系统,后者是可以避免的,但很可能很难修补很久以前无需关注的内容。
因此,如果某些用户提供的数据库字符串可能返回到浏览器,在某些情况下,使用某些过滤以防止JavaScript注入可能是有意义的。