Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 自动插入mysql\u real\u escape\u字符串_Php_Mysql_Mysql Real Escape String - Fatal编程技术网

Php 自动插入mysql\u real\u escape\u字符串

Php 自动插入mysql\u real\u escape\u字符串,php,mysql,mysql-real-escape-string,Php,Mysql,Mysql Real Escape String,免责声明:我知道这些函数位于待办事项列表的顶部。所有的警告都只是向唱诗班宣讲而已 无论如何。我发现自己受雇于一家使用mysql_*功能的公司。这还不够糟糕,因为整个东西都没有mysql\u real\u escape\u string()“太棒了”。所有的用户输入都是不受监控的,所以作为新的代码猴子,我的工作就是将其合并到所有4.93g的php脚本中。F.M.L.“那么,”我心里想,“如果我只是在每个页面上取消设置$\u请求数组(不知道为什么,但他们从来没有使用$\u POST或$\u GET,

免责声明:我知道这些函数位于待办事项列表的顶部。所有的警告都只是向唱诗班宣讲而已

无论如何。我发现自己受雇于一家使用mysql_*功能的公司。这还不够糟糕,因为整个东西都没有
mysql\u real\u escape\u string()
“太棒了”。所有的用户输入都是不受监控的,所以作为新的代码猴子,我的工作就是将其合并到所有4.93g的php脚本中。F.M.L.“那么,”我心里想,“如果我只是在每个页面上取消设置
$\u请求
数组(不知道为什么,但他们从来没有使用
$\u POST
$\u GET
,在整个程序中,他们在任何地方都使用
$\u请求
),然后用
mysql\u real\u escape\u字符串
重置它会怎么样?”。对我来说,这肯定比通过100000000行代码要好所以我坐下来写了函数来实现它。以下是我的地址:

/*lets say input is dirty and input2 is boy*/

    echo "<br><pre>";print_r($_REQUEST);echo "</pre><br>";

$tempString = implode(',', $_REQUEST);
$tempString2 = implode(',', array_keys($_REQUEST));
$tempArray = explode(',', $tempString);
$tempArray2 = explode(',', $tempString2);
$count = count($_REQUEST);
    echo "<br><pre>";print_r($tempArray);echo "</pre><br>";

    echo "<br>";
    echo "<br><pre>";print_r($tempArray2);echo "</pre><br>";

unset($_REQUEST);
   $_REQUEST = array();
   for($i = 0; $i < $count; $i++){
       $_REQUEST[$tempArray2[$i]] = "mysql_real_escape_string(".$tempArray[$i].")";
   }

    echo "<br><pre>";print_r($_REQUEST);echo "</pre><br>";
但坦率地说,这似乎太容易了。我看到的紧迫问题是

  • 它仅适用于
    $\u请求[]
  • 您必须在每页的顶部硬编码它,即使您将它设置为全局函数并包含它
  • 如果有一件事出了差错
  • mysql_*函数很烂,即
  • 作为旁注,我甚至不能告诉你我有多少次努力从PDO转换一切,因为你可以想象他们不喜欢所需的时间

    SO


    我想我把这个带到这里来是为了,第二双眼睛。你认为这有什么直接的问题吗?还有其他我错过的即时问题吗?如果你们喜欢这样,不管怎样,因为我相信还有其他人可以使用这样的东西(如果你构建了它,他们会来的),我会在github上浏览它,并将其应用到我的shcedule中,谢谢:)

    首先,你目前所做的一切毫无意义。您实际上是在用户输入周围包装单词
    mysql\u real\u escape\u string(…)
    ,这完全没有意义。它不能防止SQL注入,这意味着单词
    mysql\u real\u escape\u string
    将显示在您的输入中

    如果您在所有用户输入上调用
    mysql\u real\u escape\u string()
    ,您将得到一个不完美的
    magic\u quotes
    ,以及由此产生的所有问题。特别是,这意味着任何不直接将用户输入传递给SQL的代码(或者适当地使用
    mysql\u real\u escape\u string
    本身!)最终都会显示SQL转义文本(例如,
    \'

    除了实际检查代码并重新编写代码以适当地避开用户输入之外,没有其他真正的替代方法。但是,如果您真的有4.93GB的PHP可供使用,那么其他一些东西就大错特错了——任何应用程序都不应该那么大。这种大小的代码库是完全不可能维护的,您最好从头开始(或者找一份新工作)。

    不应该自动插入mysql\u real\u escape\u字符串。时期 仅仅因为“用mysql\u real\u escape\u string重置数据”不是“保护数据不受SQL注入”的同义词

    实际上,您要做的只是重新体现长期以来被鄙视、不推荐和已经删除的功能。
    试着想想原因。
    原因是单序列转义是SQL注入的可靠方法

    只有一个音符

    mysql函数,即mysql\u real\u escape\u字符串

    这句话不正确。
    这个诚实的函数没有问题。

    程序员不正确地使用它,对任何错误都负有责任。

    所以您正在寻找一种
    magic\u quotes
    替代方案,利用
    m\u r\u e\u s
    ?您提出的代码非常糟糕,考虑递归函数遍历每个输入数组。除了请求之外,这还可以解决覆盖$\u GET和$\u POST的问题。尝试4.93 GB未初始化的PHP;“你还是选择不重写它?”食梦者:这不是我的选择。我写了一篇4页的论文,阐述了为什么需要重写。最后我不付账单了……我真的怀疑你能自动摆脱这一困境。任何组织如果鲁莽地塞进
    $\u请求
    数据而不假思索,都会做出各种假设,认为宏替换或函数包装只是垃圾。你应该用审核这个应用程序,看看这个代码有多糟糕。@tadman如果我搜索每个页面并替换页面中的所有变量,我会同意你的。但是,当我撕开用户的输入,只是重建它,它非常感动脚本。我甚至没有考虑魔术引文,虽然从来没有使用它之前,我知道足够的,不想去那个盟友。我确实有一个工作面试,那是一个该死的工作。在那之前,我将半放弃这个想法,更加努力地推动PDO
    Array
    (
        [input] => dirty
        [input2] => boy
    )
    
    
    Array
    (
        [0] => dirty
        [1] => boy
    )
    
    
    
    Array
    (
        [0] => input
        [1] => input2
    )
    
    
    Array
    (
        [input] => mysql_real_escape_string(dirty)
        [input2] => mysql_real_escape_string(boy)
    )