半自动地为不安全的PHP mysql脚本添加安全性

时间:2012-04-11 21:02:04

标签: php mysql security automation notepad++

我有很多类似

的文件
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的插件,并尝试创建一个宏,但没有成功。

有什么建议吗?

2 个答案:

答案 0 :(得分: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)。

答案 1 :(得分: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;
}