gpt4 book ai didi

php - 为什么我们要在 PHP 中创建查询时转义双引号、单引号

转载 作者:行者123 更新时间:2023-11-29 06:07:06 24 4
gpt4 key购买 nike

为什么我们要在 PHP 中创建查询时转义双引号、单引号?这样做有什么特别的好处吗?或者这只是一个好的做法?

最佳答案

它是使您的查询有效且安全所必需的。考虑以下代码:

$name = "O'reilly";
$sql = "INSERT INTO users (name) VALUES ('$name')";

结果 SQL 会变成这样:

INSERT INTO users (name) VALUES('O'reilly');

这根本行不通。需要正确转义:

INSERT INTO users (name) VALUES('O\'reilly');

这同样适用于其他特殊字符。


防止SQL注入(inject)

考虑这个查询:

DELETE FROM users WHERE username='$username';

其中$username是从$_POST获取的。如果攻击者设法发布类似 ' OR 1; 的字符串-- 作为 $username 然后查询变成这样:

DELETE FROM users WHERE username='' OR 1; -- ';

这是有效的,并且 WHERE 始终评估为 true,您必须向愤怒的用户提供良好的解释。

另请参阅:Best way to prevent SQL Injection in PHP

关于php - 为什么我们要在 PHP 中创建查询时转义双引号、单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10974936/

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