所以我有一个表单可以接受用户的一些输入,这些输入稍后可能会在页面上显示。
我从安全的角度考虑这样做的方法是获取输入,将mysql_real_escape_string()函数应用于所有输入,然后使用预准备语句插入。
检索数据时,我会先在屏幕上显示htmlspecialchars()。
这可以吗?我忽略了一些重要的事情吗?
答案 0 :(得分:4)
两件事:
mysql_real_escape_string
是正确的工具所以,对于HTML的输出,你正在做的事情似乎没问题;但是你输出的数据不仅仅是数据库。
作为旁注:如果您想允许用户使用HTML,您可以使用HTMLPurifier之类的工具 - 它允许您指定允许或不允许的标记/属性。
答案 1 :(得分:1)
您指出的方法是正确的,因此必须使用。是的,你缺少XSS过滤。检查此站点是否有XSS攻击示例:
所以,你最好为这种类型的黑客获得一个预防系统,比如正则表达式字符串。这是一些教程:
http://www.chipmunkninja.com/Helping-Prevent-XSS-Attacks-in-2@ http://shiflett.org/blog/2007/mar/allowing-html-and-preventing-xss