我已经构建了一个相当大的Web应用程序,现在几乎已经完成,我没有做任何事情来使用户输入安全。
每个页面首先调用'midleware'对象,我想我可以清除其构造函数中的所有$_GET
和$_POST
变量。
是否可以只使用PHP
函数来确保所有输入的安全,或者我应该通过每个输入进行清理并专门针对它的用途进行清理?该应用程序使用MySQL
数据库,大多数输入与MySQL
数据库一起使用。
我想我除了字母数字和标点符号外,我可以从输入中删除所有内容。
答案 0 :(得分:4)
在确切知道输入的使用位置之前,不可能“逃避”或使所有输入“安全”。
防止SQL注入应主要通过准备好的语句来完成。 PDO和mysqli扩展都支持预处理语句,并且通常与标准PHP发行版捆绑在一起。但是,您可以使用iconv
和mbstring_*
扩展程序强制所有输入到指定的字符编码。
当您知道将在何种上下文中使用时,应该完成验证输入。如果输入应该是电子邮件,那么您最好先确认一次电子邮件,而不是事先做出假设。关于用户输入的假设总是很糟糕。如果输入不符合您指定的限制,您应该认为它无效/受污染。
希望这可以帮助,快乐编码。