gpt4 book ai didi

php - 转义字符,例如 $ 和 % | MySQL 和 PHP

转载 作者:可可西里 更新时间:2023-11-01 07:58:30 25 4
gpt4 key购买 nike

所以基本上我一直在深入挖掘 MySQL 和 PHP 领域……特别是在处理数据库和表单输入时我应该采取的安全措施。到目前为止,我发现强烈推荐以下内容:

  1. 准备好的陈述
  2. 使用 mysqli_real_escape_string()
  3. 不使用 Magic Quotes,因为它会混淆数据库并最终给你类似“你的名字不是......”的东西。

所有这些都很棒,我一直在关注它。但是,我想知道是否还应该转义美元符号 [$]、百分号 [%] 以及可能的其他字符。查询不能将美元符号解释为 PHP 变量吗?我听说使用 % 符号甚至通配符的 LIKE 语法怎么样?准备好的语句在技术上应该处理所有这些,但我只是想安全并确保我正确地转义了所有内容。如果我忘记使用准备好的语句或只是忽略了它们,我希望这个第二道防线可以让我不再头疼。

这是我目前用于转义的内容:

function escape($connection, $data){
$new_data = trim($data);
$new_data = mysqli_real_escape_string($connection, $new_data);
$new_data = addcslashes($new_data, '%_$');
$new_data = htmlspecialchars($new_data, ENT_NOQUOTES);

return $new_data;

}

这样合适吗?我做错了什么可怕的事吗?请注意,在检索数据库数据时,我必须删除 $、% 和 _ 字符前的反斜杠。

最佳答案

您不需要转义美元符号。 MySQL 不会特别对待该字符,而 PHP 只能在源代码中识别它,而不是在字符串值中识别它(除非您在字符串上调用 eval,但那完全是另一回事)。

如果您使用用户输入作为 LIKE 的参数并且您不希望用户能够使用通配符。如果您正在处理搜索表单,这可能会出现。存储到数据库时不需要使用它。

访问数据库时不需要使用htmlspecialchars。仅当您在 HTML 页面中向用户显示数据时才应使用它,以防止 XSS 注入(inject)。

关于php - 转义字符,例如 $ 和 % | MySQL 和 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32240002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com