我知道这是一场永无止境的战斗,每个人都有不同的方法和意见......我需要一种新的方法来清理/清理PHP中的用户输入。我的一个网站目录中出现了一些随机文件...我不确定这是因为密码被盗还是什么,但很明显我的方法不再有用了!对不起,这可能是重复的,但我已经厌倦了我的服务器有漏洞!!!
我目前使用它:
function clean($value) {
if (is_array($value)) {
foreach($value as $k => $v) {
$value[$k] = clean($v);
} }
else {
if(get_magic_quotes_gpc() == 1) {
$value = stripslashes($value);
}
$value = trim(htmlspecialchars($value, ENT_QUOTES, "utf-8"));
$value = mres($value);
}
return $value;
}
然后我通常将其包含在每个文件的顶部:
$POST = clean($_POST);
$GET = clean($_GET);
请在标记我之前提供帮助,因为我无法再次将垃圾邮件列入黑名单!
答案 0 :(得分:2)
您刚发布的此功能与目录中的“随机文件”无关。这些是用于字符串清理的,你也没有清理整数。如果您使用此功能来清理您的database inputs
,那么您必须首先验证您输入的数据,以便它符合您的需求,所以如果您期望整数,则确保其为整数而不只是添加斜杠来阻止字符串中的引号,如果你期望一个字符串你确定它是一个字符串。如果您计划显示用户输入的任何数据,则必须防止XSS
。如果您的服务器存在漏洞,那么问题不在于您的网站,而在于服务器本身安装的软件。至于随机出现的文件,我能想到的唯一方法是,如果你允许一些用户上传图片或文件而不确定他们的扩展名是什么,从而允许人们上传PHP文件或HTML代码。最后,我想清楚一点NO ONE可以为您提供符合您需求的消毒功能,您需要根据您的确切需求制作一个,因为除了您之外没有人知道您期望的数据类型。
这是保护您的网站免受任何用户输入的一般规则,无论是上传的文件还是正在注册的用户