gpt4 book ai didi

php - 使用 PHP 5.6 和 PDO 是否需要转义字符?

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:06 25 4
gpt4 key购买 nike

我使用 PDO 读取/输入 MySQL 数据以防止 SQL 注入(inject)

$stmt = $DBH->prepare("SELECT * FROM T_Users WHERE User_Name = :UN");
$stmt->bindParam(':UN', $user_name);
$stmt->execute();

在将字符输入数据库之前或在浏览器中显示数据库中的数据之前,我是否应该转义字符?恶意人员是否可以通过将 JavaScript 代码记录到我的数据库来利用我的网站或其他用户?

谢谢!

最佳答案

您当然不应该转义为绑定(bind)参数传递的参数。

根本没有逃避的发生。 SQL 引擎使用占位符编译语句,并在以后单独接收参数值,未转义。正是 SQL 引擎将编译后的语句(此时不再有 SQL 字符串)和参数值结合起来的能力,确保了整个 SQL 注入(inject)问题变得无关紧要。

为绑定(bind)占位符传递的转义值会产生负面影响。 SQL 引擎确实需要原样的值,如果以某种方式对它们进行转义,则引擎不会对它们进行转义,而是按字面意思进行处理。

关于php - 使用 PHP 5.6 和 PDO 是否需要转义字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36681821/

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