可能重复:
What’s the best method for sanitizing user input with PHP?
我知道这里曾多次询问过类似的问题,而且我花了一些时间阅读所有这些问题,但我仍然不确定我的申请是否安全......
我正在构建的网站允许用户将内容发布到数据库中,编辑自己的帖子,搜索其他帖子以及显示其他用户的帖子。显然,有大量的用户输入和表单数据,还有什么不是,我必须确保它是安全的。
所以这就是我的流程目前的工作方式:
为了确保网站的安全,我必须采取哪些措施来采取哪些措施? (防止代码注入和XSS)
现在这就是我的想法,如果我错了,请纠正我:
对于1.我无法控制,数据完全容易受到攻击。
因此在2.我必须检查数据是否与我期望的某些模式匹配(检查它是否是数字,检查它是否是日期,检查它是否只是字母,检查它是否是数组中的值我提供的,使用正则表达式,...)这样我可以防止,例如,如果我期望一个介于1和10之间的值,有人说“' - DROP表;”相反,我已经确保这些字段是安全的。当然,字段不像文本框那样具有限制性,用户可以在其中输入消息。
对于第3步,我不需要做任何事情,如果我在之前的步骤中做了一切正确,对吗?攻击者不应该能够更改SESSION数据或类变量,除非服务器端存在重大安全漏洞,我的托管服务提供商应对此负责,是否正确?
在我执行查询的第4步中,我需要使用mysqli_real_escape_string()转义数据,以确保数据不作为命令处理。
在第5步中,我计划将每个特殊字符转换为各自的HTML代码段。例如,所有"
都将转换为"
。
我是否应该在每个步骤中应用任何其他安全措施/过滤器?
如果我在步骤2中犯了错误,或者我无法找到字段的正则表达式,该怎么办?我只是将$ _POST转换为$ _SESSION而无需进一步验证。它会在查询过程中保存我的屁股以使用mysqli_real_escape_string()并在浏览器中显示之前过滤所有字符吗?
我期待您的见解!