我不是专业的网络开发人员,但我喜欢网络开发作为一种爱好。 我是一名学生,我被要求制作一个部门事件网站。我需要为用户注册创建 HTML 表单。我知道 XSS 脚本攻击和 SQL 注入(inject)。但不知道它们具体是如何工作的。我在服务器端使用 PHP 和 MySQL。
我正在考虑:
- 不要采用空值。
- 验证数字字段是否仅由整数值组成。
- 电子邮件 ID 验证。等等..
我所做的这一切都是使用 RegEx 检查 - 都使用 javascript 和 PHP
现在我的问题是:
- 哪些字符是我不应该允许进入我的数据库的?
- 如果我将 < 和 > 与其替代的
<
和>
进行转换,可以吗? - 接受输入时我还应该考虑什么?
我不想限制用户输入无害的符号。那么,在将值存储到数据库之前,是否需要过滤任何特定的字符集,以便我可以正确地为表单字段编写正则表达式检查?
我在谷歌上搜索过,但没有找到正确的答案。 :(
最佳答案
为了防止 SQL 注入(inject),您应该使用该语言的转义函数。对于 PHP,这是 mysql_real_escape_string
。或者,更好的是,使用 PDO 来限制用户可以放入数据库的内容。
HTML注入(inject)/XSS攻击不同;您可以毫无问题地将原始 HTML 存储在数据库中,但在显示源自用户的任何 HTML 之前,请对其调用 htmlspecialcharacters
以防止客户端的 Web 浏览器对其进行解释.
请勿不要编写您自己的自定义检查代码。你会错过一些东西。
关于php - 使用 javascript、PHP、MySQL 进行 html 表单处理时的安全预防措施,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3478930/