gpt4 book ai didi

sql - 使用绑定(bind)变量时如何实现 SQL 注入(inject)?

转载 作者:行者123 更新时间:2023-12-03 01:16:43 28 4
gpt4 key购买 nike

使用绑定(bind)变量时如何进行 SQL 注入(inject)?

我的 DBA 说使用绑定(bind)变量并不能完全防止 SQL 注入(inject),但我不知道为什么会出现这种情况,因为绑定(bind)变量(尤其是字符串)通常会强制注入(inject)的 SQL 成为字符串在 WHERE 子句中。

示例:

SELECT CUST_ID  
FROM CUST.CUSTOMER
WHERE FIRST_NAME=:FNAME;

如果FNAME="SELECT FNMAME WHERE CUST_ID=10040",数据库将运行以下查询

SELECT CUST_ID 
FROM CUST.CUSTOMER
WHERE FIRST_NAME="SELECT FNMAME WHERE CUST_ID=10040";

这将返回 0 行。

我在互联网上搜索了这个问题的答案,甚至在这个网站上搜索过,但我找不到。

再次感谢。

最佳答案

如果您准备语句并将所有参数绑定(bind)到它,您可以放心,SQL 注入(inject)是不可能的。这是因为这种工作方式不会向SQL注入(inject)任何东西,因此不可能SQL注入(inject)

首先编译SQL语句,然后将参数传递给数据库引擎。那时 SQL 文本不再起作用,而是它的编译版本。引擎知道如何处理这两条信息:编译后的语句和参数。它不会将参数注入(inject)到某些SQL中,此时SQL不再发挥作用:它已经被编译了。

关于sql - 使用绑定(bind)变量时如何实现 SQL 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43235073/

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