gpt4 book ai didi

php - mysqli_real_escape_string 使用什么类型的引号?

转载 作者:行者123 更新时间:2023-11-29 12:16:53 26 4
gpt4 key购买 nike

我在程序 mysqli 中创建了以下脚本,因为我刚刚从旧的 mysql 开始。我不确定查询周围的引号类型是否可以防止注入(inject)。一些用户用 ' 发布示例,另一些用户用 " 发布示例,所以现在我很困惑。我会被以下代码注入(inject)或攻击吗?正确的引号类型是什么?

$username = mysqli_real_escape_string($database,$_POST['form_user']);
$password = mysqli_real_escape_string($database,$_POST['form_password']);

$members = "SELECT * FROM `accounts` WHERE `member` = '$username'";
$result = mysqli_query($database,$members);

我只是一个初学者,所以面向对象或 PDO 或准备好的语句目前对我来说很困难,所以我只需要改进这个脚本并使其更安全,但是有这么多围绕查询变量的示例和符号,我对什么感到困惑是安全的,也是不安全的。

最佳答案

mysqli_real_escape_string 遵循底层 C mysql 库的 mysql_real_escape_string function (或等效的),对字符进行编码:

\, ', ", NUL (ASCII 0), \n, \r, and Control+Z

因此,'" 都被转义。这意味着您可以同样使用 MySQL allows both double and single quoted strings 来分隔查询中的字符串。

我知道你知道这一点,但你真的应该加入 prepared-statement bandwagon现在而不是逃避。

关于php - mysqli_real_escape_string 使用什么类型的引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29664390/

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