2

我有很多文件,其中包括

1- mysql_query("update ... $_POST['foo'] ...");

我想把它变成这个

2- $foo = mysql_real_escape_string($_POST['foo']);
3- mysql_query("update ... $foo ...");

我的想法是打开每个文件,选择文本$_POST['foo'](表格 1-)按一个组合键,然后自动使用一些工具:

  • 放在我的剪贴板上mysql_real_escape_string($_POST['foo']);(用于添加 2-)
  • 将 1- 中的文字替换为 3- 中的文字

然后手动写$foo =,按ctrl+v生成2-

我正在尝试使用notepad++和一个名为fingertext的插件,并尝试制作一个宏,但没有成功。

有什么建议吗?

4

2 回答 2

3
$_POST = sanitize($_POST);
$_GET = sanitize($_GET);

    function sanitize($input) {
        if (is_array($input)) {
            foreach($input as $var=>$val) {
                $output[$var] = sanitize($val);
            }
        } else {
            if (get_magic_quotes_gpc()) {
                $input = stripslashes($input);
            }
            $output = mysql_real_escape_string($input);
        }
        return $output;
    }

它并不完美,但是如果您有很多不安全的页面并且需要快速修复以使它们都安全,您可以在连接到 mysql 后放置它。另外,请记住,如果您的查询有未引用的数字变量,您将必须验证它们是数字,或者在查询中使用它们之前对它们进行类型转换。mysql_real_escape_string() 仅适用于引用值(即 blah_column = 'value',但不适用于 blah_column = value)。

于 2012-04-11T21:06:30.240 回答
2

用手一一更换。如果您关心安全性,请不要进行自动替换。并且至少创建一个函数而不是mysql_real_escape_string((), 使用它。

 //just for example, better can be written
function db_escape($var, $type = 'string') 
{
   if($type == 'string') return mysql_real_escape_string($var);
   if($type == 'integer') return (int) $var;
   if($type == 'float') return (float) $var;
}
于 2012-04-11T21:08:17.887 回答