最近我在nginx / php托管网站上看到关于get / post参数的日志中有更多错误。我有一些基本的检查(消毒),但我认为我做得不够。
我的一些检查显示了对“id”参数的尝试:
Parameter ID was not a number! Parameter was: function id() {
var s = '';
while (s.length < 32) {
s = Math.random().toString(36).replace(/[^A-Za-z]/g, '');
}
return s;
}" while reading response header from upstream, client: ...
所以基本上我期待一个数字,并得到一个非常有趣的字符串。我甚至不知道他们试图通过该代码实现什么,它似乎是javascript,我的服务器是php。
我正在考虑用正则表达式来检查字符串参数。
您建议在php网站上获取/发布参数进行哪种检查?
答案 0 :(得分:0)
这实际上取决于您尝试检索的数据类型。在您使用(整数)数字的情况下,我认为您正在做的事情很好:如果他们没有输入整数值,那么只需返回您正在做的错误。
对于文本,我认为清除(删除非法字符),例如使用htmlentities()
应该足以防止黑客攻击。
但同样,它实际上取决于您使用的安全级别和数据类型。