通过PHP清理用户输入

时间:2013-12-11 19:06:40

标签: php sanitization

我知道这是一场永无止境的战斗,每个人都有不同的方法和意见......我需要一种新的方法来清理/清理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);

请在标记我之前提供帮助,因为我无法再次将垃圾邮件列入黑名单!

1 个答案:

答案 0 :(得分:2)

您刚发布的此功能与目录中的“随机文件”无关。这些是用于字符串清理的,你也没有清理整数。如果您使用此功能来清理您的database inputs,那么您必须首先验证您输入的数据,以便它符合您的需求,所以如果您期望整数,则确保其为整数而不只是添加斜杠来阻止字符串中的引号,如果你期望一个字符串你确定它是一个字符串。如果您计划显示用户输入的任何数据,则必须防止XSS。如果您的服务器存在漏洞,那么问题不在于您的网站,而在于服务器本身安装的软件。至于随机出现的文件,我能想到的唯一方法是,如果你允许一些用户上传图片或文件而不确定他们的扩展名是什么,从而允许人们上传PHP文件或HTML代码。最后,我想清楚一点NO ONE可以为您提供符合您需求的消毒功能,您需要根据您的确切需求制作一个,因为除了您之外没有人知道您期望的数据类型。

这是保护您的网站免受任何用户输入的一般规则,无论是上传的文件还是正在注册的用户

  1. 验证数据并确保它是您期望的数据类型。
  2. 清理该数据,使其不包含任何可能危及您网站的恶意代码。
相关问题