Php 字符串清理的最佳方法
清除此字符串以防止SQL注入的最佳方法是什么Php 字符串清理的最佳方法,php,sql-injection,sanitization,Php,Sql Injection,Sanitization,清除此字符串以防止SQL注入的最佳方法是什么 $order_by_str = 'dest ASC'; 编辑 我现在用这个,好像对我有用 $order_by_str = mysql_real_escape_string('dest ASC'); 希望这就是你想要的 给出的答案不能回答问题 虽然没有通用的“字符串清理”方法,但是您可能会注意到给定的字符串是一个非常特殊的字符串。 唯一的净化方法是将其列入白名单 清理此字符串的最佳方法是将两个部分分开,然后根据白名单检查这两个部分 因此,我不想让这
$order_by_str = 'dest ASC';
编辑
我现在用这个,好像对我有用
$order_by_str = mysql_real_escape_string('dest ASC');
希望这就是你想要的 给出的答案不能回答问题 虽然没有通用的“字符串清理”方法,但是您可能会注意到给定的字符串是一个非常特殊的字符串。
唯一的净化方法是将其列入白名单 清理此字符串的最佳方法是将两个部分分开,然后根据白名单检查这两个部分 因此,我不想让这个字符串完整,而是把它放在两个变量中,
$\u GET['orderby']
和$\u 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";
可能重复的可能重复的可能重复的您是否接受用户输入?我很好奇你为什么要担心清理一个常规字符串…不,如果在语句后面加一个“'”并在你使用的脚本后收到一个MySQL错误,我也会收到一个错误。这不是他想要的,也不会清理任何东西。
$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";