mysql_real_escape_string() 仍然是针对 SQL 注入的可靠保护吗?

Susan Sarandon
发布: 2024-11-11 16:31:03
原创
626 人浏览过

Is mysql_real_escape_string() Still a Reliable Protection Against SQL Injection?

评估 mysql_real_escape_string() 的完整性

人们对 mysql_real_escape_string() 在保护数据库查询免受 SQL 注入攻击方面的可靠性提出了担忧。批评者参考了旧文章,指出该函数在提供足够保护的能力方面存在潜在缺陷。

MySQL 文档

mysql_real_escape_string() 的 MySQL C API 文档承认了这一问题:

If you need to change the character set of the connection, you should use the mysql_set_character_set() function rather than executing a SET NAMES (or SET CHARACTER SET) statement. mysql_set_character_set() works like SET NAMES but also affects the character set used by mysql_real_escape_string(), which SET NAMES does not.
登录后复制

PHP 的对应部分

在 PHP 中,mysql_set_charset() 的功能与 MySQL 的 mysql_set_character_set() 类似,并且充当 PHP 的对应部分。

Proofcode

<?php
$str = "'mystring'";

// Set encoding
mysql_set_charset('utf8');

// Escape string with correct encoding
$escaped_str = mysql_real_escape_string($str);
登录后复制

通过在使用 mysql_real_escape_string() 之前利用 mysql_set_charset() 修改编码,可以确保字符集设置正确并且函数按预期运行。这解决了对潜在漏洞的担忧,并允许 mysql_real_escape_string() 有效防止 SQL 注入攻击。

以上是mysql_real_escape_string() 仍然是针对 SQL 注入的可靠保护吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板