字符串清理PHP的最佳方法

时间:2013-09-20 14:04:33

标签: php sql-injection sanitization

清理此STRING以防止SQL注入的最佳方法是什么?

$order_by_str = 'dest ASC';

修改

$whitelist = array('start','target','exec');

    if ( in_array( $order_by, $whitelist ) ) {
  $order_by_str = $order_by;
} else {
  $order_by_str = 'start';
}

我现在用它,它似乎对我有用。

2 个答案:

答案 0 :(得分:1)

鉴于答案没有回答这个问题。

虽然没有办法进行通用的“字符串清理”,但可能会注意到给定的字符串是非常特殊的字符串。
清除它的唯一方法是白名单。

清理此字符串的最佳方法是将两个部分分开,然后再针对白名单进行检查。

所以,我没有将这个字符串整齐,而是将它包含在2个变量$_GET['orderby']$_GET['dir']中。 因此代码将是

$allowed = array("dest","foo","whatever");
$key     = array_search($_GET['orderby'], $allowed));
$orderby = $allowed[$key];

$dir     = $_GET['dir'] == 'DESC' ? 'DESC' : 'ASC'; 

$query   = "SELECT * FROM t ORDER BY $orderby $dir";

答案 1 :(得分:-2)

$order_by_str = mysql_real_escape_string('dest ASC');

希望这就是你要找的东西!!!