我已经构建了一个相当大的web应用程序,现在几乎完成了,我还没有做任何事情来保证用户输入的安全。
每个页面首先调用'中间件'对象,我想我可以在其构造函数中清除所有$_GET
和$_POST
变量。
是否有可能只使用PHP
函数来确保所有输入安全,或者我应该检查每个输入并专门清理它的用途?应用程序使用MySQL
数据库,大多数输入与MySQL
数据库一起使用。
我想我可以把所有的东西从输入中去掉,除了字母、数字和标点符号。
在确切知道输入的使用位置之前,不可能'逃避'或使所有输入'安全'。
防止SQL注入应该主要通过预处理语句来完成。PDO和mysqli扩展都支持预处理语句,并且通常与标准PHP发行版捆绑在一起。但是,您可以使用iconv
和mbstring_*
扩展强制所有输入为指定的字符编码。
当您知道将在什么上下文中使用输入时,应该对输入进行验证。如果输入应该是一封电子邮件,你最好先确认一下它实际上是一封电子邮件,而不是事先做出假设。关于用户输入的假设总是不好的。如果一个输入不符合你指定的限制,你应该认为它是无效的。
希望对大家有所帮助,快乐编码。