这种消毒功能会从大多数攻击中拯救出来吗?

时间:2012-04-25 10:52:41

标签: php security xss sql-injection csrf

此功能会从大多数错误输入中保存我的应用吗? 用户输入应仅包含数字文本。

function sanitize($data){
    $data = strip_tags($data);
    $data = htmlspecialchars($data,ENT_QUOTES);
    $data = filter_var($data,FILTER_SANITIZE_STRING);
    $data = filter_var($data,FILTER_SANITIZE_STRING,FILTER_FLAG_STRIP_LOW);
    return $data;           
}

P.S。需要任何其他信息吗?

1 个答案:

答案 0 :(得分:3)

没有“只是消毒”数据这样的事情。您必须针对特定用例适当地清理数据,无论是发送到数据库,使用文件名,回显给用户,等等。您完全停止数据清理的尝试注定要失败,因为没有消毒数据,完全停止。它甚至没有意义。 “清理”数据的概念只有在与您希望对数据进行清理的上下文配对时才有意义。

特别是,如果您打算清理数据以进入数据库(不清楚 - 您的问题没有特别引用数据库,但它有“sql-injection”标记),那么您很可能需要有关您正在使用的数据库连接,以便正确执行。