我有很多类似
的文件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 - )然后手动编写$foo =
并按ctrl + v生成2 -
我正在尝试使用notepad ++和一个名为fingertext的插件,并尝试创建一个宏,但没有成功。
有什么建议吗?
答案 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;
}