gpt4 book ai didi

php - 在没有 PDO::PARAM 的情况下绑定(bind)参数是否安全?

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

这是一个示例查询:

$sql = $db->prepare("INSERT INTO `accounts` 
(`id`, `name`, `email`, `phoneNumber`, `country`, `city`, `addrLine1`, `company`, `zipCode`, `sha_pass_hash`, `ClientGroup`, `Newsletter`, `signedIN`) VALUES
(NULL, :name, :email, :phoneNumber, :country, :city, :addrLine1, :company, :zipCode, :sha_pass_hash, '1', '1', NOW())");
$sql->bindParam(':name',$name);
$sql->bindParam(':email',$email);
$sql->bindParam(':phoneNumber',$phoneNumber);
$sql->bindParam(':country',$country);
$sql->bindParam(':city',$city);
$sql->bindParam(':addrLine1',$addrLine1);
$sql->bindParam(':company',$company);
$sql->bindParam(':zipCode',$zipCode);
$sql->bindParam(':sha_pass_hash',$sha_pass_hash);
$sql->execute();

正如您在使用 bindParam 时看到的那样 PDO::PARAMPDO::PARAM_STRPDO::PARAM_INT 没有设置.

毕竟我的问题是:当未设置 PDO::PARAM 时,此查询是否易受 SQL 注入(inject)攻击?

最佳答案

这才是正确的做法。 PARAM 常量是为了方便起见,因此您可以根据需要将数据强制转换/转换为适当的类型。

有时这是相关的,您可能希望某些值作为整数以避免在将非数字数据插入数字列时出现错误,但如果您准备好捕获并报告这些错误,那么这里就不会有任何问题。这可能是比静默处理数据更好的解决方案。

关于php - 在没有 PDO::PARAM 的情况下绑定(bind)参数是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42657683/

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