PHP注入保护功能

时间:2014-09-09 21:04:25

标签: php mysql

您好我正在通过互联网搜索以防止攻击 我收集了一些代码,但我不确定他们是否做同样的工作 或者他们甚至是无用的。 1-2小贴士也欢迎我是新的PHP。 这是我用于进出sql的所有东西的函数:

public static function safe($str = '')
{
    $ret_string = $str;
    $ret_string = htmlspecialchars($ret_string);
    $ret_string = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($ret_string) : mysql_escape_string($ret_string);
    $ret_string = strip_tags($ret_string);
    $ret_string = stripslashes($ret_string);
    $ret_string = htmlspecialchars($ret_string);
    $ret_string = trim(htmlentities($ret_string));
    $ret_string = trim($ret_string);
    $ret_string = str_replace('\\l', '', $ret_string);
    $ret_string = str_replace('\\', '', $ret_string);
    $ret_string = str_replace("%00", "",$ret_string);
    $ret_string = str_replace(' ', '', $ret_string);
    $ret_string = str_replace("'", "", $ret_string);
    $ret_string = str_replace("\"", "",$ret_string);
    $ret_string = str_replace("--", "",$ret_string);
    $ret_string = str_replace("-", "",$ret_string);
    $ret_string = str_replace("^", "",$ret_string);
    $ret_string = str_replace("&", "",$ret_string);
    $ret_string = str_replace("%", "",$ret_string);
    $ret_string = str_replace("(", "",$ret_string);
    $ret_string = str_replace(")", "",$ret_string);
    $ret_string = str_replace("=", "",$ret_string);
    $ret_string = str_replace("+", "",$ret_string);
    $ret_string = str_replace(";", "",$ret_string);
    $ret_string = str_replace(":", "",$ret_string);
    $ret_string = str_replace("|", "",$ret_string);
    $ret_string = str_replace("<", "",$ret_string);
    $ret_string = str_replace(">", "",$ret_string);
    $ret_string = str_replace("~", "",$ret_string);
    $ret_string = str_replace("`", "",$ret_string);
    //Extra ANSI attacks
    $ret_string = str_replace("0x22", "",$ret_string);
    $ret_string = str_replace("0x25", "",$ret_string);
    $ret_string = str_replace("0x27", "",$ret_string);
    $ret_string = str_replace("0x5c", "",$ret_string);
    $ret_string = str_replace("0x5f", "",$ret_string);
    //Extra hex attacks
    $ret_string = str_replace("\x00", "",$ret_string);
    $ret_string = str_replace("\n", "",$ret_string);
    $ret_string = str_replace("\r", "",$ret_string);
    $ret_string = str_replace("\x1a", "",$ret_string);
    $ret_string = str_replace("%20and%20", "",$ret_string);
    return $ret_string;
}

1 个答案:

答案 0 :(得分:6)

您不需要这样做。使用带参数的预准备语句,这样就不需要转义任何内容。