Mag*_*gix 2 php mysql sql sanitization sql-injection
我在自由软件中找到了这个消毒功能:
function VerifChamps($valeur)
{
$verif = (get_magic_quotes_gpc()) ? htmlentities($valeur, ENT_QUOTES) : addslashes($valeur);
return $verif;
}
Run Code Online (Sandbox Code Playgroud)
然后查询完成如下:
$login=VerifChamps($_POST['name']);
mysql_select_db(..., ...);
$query = sprintf("SELECT * FROM table WHERE login='%s'", $login);
$Result = mysql_query($query, $connexion) or die(mysql_error());
$row_RsProf = mysql_fetch_assoc($Result);
mysql_free_result($Result);
Run Code Online (Sandbox Code Playgroud)
这段代码有多安全?如何改进它以使其更安全?
编辑:服务器正在运行PHP v5.2.13,启用了Magic Quotes
简短的回答是,它根本不安全.
这是它的错误......
get_magic_quotes_gpc,这已经从PHP中删除多年了htmlentities如果启用了魔术引号,您将使用对字符串进行编码,但如果它已关闭则不会(对损坏数据的方式)htmlentities来发送数据到数据库?它根本不会阻止sql注入.addslashes 转义数据时不会考虑客户端连接字符编码(这使得它非常不安全)NULL)使整个函数无用此外,mysql已弃用并已从PHP 7中删除.请改用较新的MySQLi扩展名.
您可以使用MySQLi和PDO等新的数据库API提供的功能简单地替换您的整个函数,这些API 提供预处理语句和参数化查询,这些已经证明是可靠且安全的.您在此示例中提供的代码显然非常古老且非常不安全.
| 归档时间: |
|
| 查看次数: |
257 次 |
| 最近记录: |