揭穿所谓的缺陷:探索 mysql_real_escape_string() 的可靠性
尽管声称 mysql_real_escape_string() 存在缺陷,但有证据表明它提供了稳健的功能使用时防止 SQL 注入漏洞
对所谓缺陷的审查表明,它们通常源于不当使用或过时的信息。正如 MySQL C API 文档明确指出的那样,使用 mysql_set_character_set() 而不是 SET NAMES 或 SET CHARACTER SET 语句设置字符集至关重要。后面的选项不会影响 mysql_real_escape_string() 使用的字符集。
PHP 的 mysql_set_charset() 与 MySQL 的 mysql_set_character_set() 相对应。通过利用它来修改编码,开发人员可以确保兼容性并规避潜在问题。
代码示例:
<?php $mysqli = new mysqli('host', 'user', 'password', 'database'); $mysqli->set_charset('utf8mb4'); // Set utf8mb4 encoding // Example usage of mysql_real_escape_string() $escaped_string = mysql_real_escape_string($mysqli->connect_errno, $_POST['username']);
这种方法有效地设置字符集并使用 mysql_real_escape_string( ),降低 SQL 注入攻击的风险。
以上是mysql_real_escape_string() 真的有缺陷,还是只是被滥用了?的详细内容。更多信息请关注PHP中文网其他相关文章!