PHP注入保护功能

PHP注入保护功能,php,mysql,Php,Mysql,您好,我正在互联网上搜索以防攻击 我收集了一些代码,但我不确定它们是否在做同样的工作 或者它们是否无用。 1-2提示也很受欢迎,我是php新手。 以下是我用于sql中/外的所有内容的函数: public static function safe($str = '') { $ret_string = $str; $ret_string = htmlspecialchars($ret_string); $ret_string = function_exists("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;
}
公共静态函数安全($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=带标签($ret_string);
$ret_string=stripslashes($ret_string);
$ret_string=htmlspecialchars($ret_string);
$ret_string=trim(htmlentities($ret_string));
$ret_string=修剪($ret_string);
$ret_string=str_replace('\\l','$ret_string);
$ret\u string=str\u replace(“\\”,“$ret\u string”);
$ret_string=str_replace(“%00”,”,$ret_string);
$ret_string=str_replace('',$ret_string);
$ret_string=str_replace(“,”,$ret_string);
$ret\u string=str\u replace(“\”、“,$ret\u 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\u string=str\u replace(“~”、“”、$ret\u string);
$ret_string=str_replace(“`,”,$ret_string);
//额外的ANSI攻击
$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);
//额外的妖术攻击
$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(“%20和%20”,”,$ret_string);
返回$ret_字符串;
}

您不需要这样做。使用带有参数的准备语句,这样您就不需要逃避任何事情。

它是100%安全的,易于实现,正如本答案的作者所指出的,您不会犯任何错误。我使用的php是一个旧的TopSite cms,它的工作已被开发人员中断,但我喜欢它,我想这样做重建它,就像5年前一样,它没有使用预先准备好的语句,也没有说实话。除了需要修改的大修改之外,我不知道怎么做,所以我使用了搜索,并用旧样式进行了修复,但我不确定它是否正确,谢谢你的回答。如果你真的需要,你可以做
$ret_string=str_replace(['\\l','\\',…],“”,$ret_字符串);
您不应该搜索特定的函数,而应该告诉自己SQL注入的实际威胁/问题在哪里-一旦您了解了这一点,您应该能够知道如何应对它//除此之外,您在这里展示的函数是total BS-它通过删除大量字符来扰乱数据rom,这当然不是你想要的。(想象一下,这里的这个网站也会采取同样愚蠢的方法——那么你甚至无法发布包含这些字符的代码来讨论它……)抓住这个喇叭,把它扔到太阳底下。这是最糟糕的。你在这里得到的是编程的等价物。继续读下去。从这里开始真正理解这个问题:正如我在戴先生身上说的,如果可能的话,我真的不知道我希望如何更正这个函数,将所有的类都改为使用准备好的声明对我来说是一件大事,我无法独自做到这一点,经过一个月的搜索和测试,我来到这里寻求一些帮助。在网站运行的那一刻,我尝试了一些使用php注入的程序,比如havij,我直到现在才发现任何漏洞,如果我不好,很抱歉。谢谢你的回答。