gpt4 book ai didi

c# - 参数绑定(bind) : What happens under the hood?

转载 作者:太空狗 更新时间:2023-10-29 20:29:43 25 4
gpt4 key购买 nike

.NET、Java 和其他各种语言的高级数据库 API 通常提供称为准备语句和参数绑定(bind)的技术,而不是向数据库服务器发送纯文本命令。我想知道的是当您执行这样的语句时会发生什么:

SqlCommand cmd = new SqlCommand("GetMemberByID");
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter("@ID", memberID);
para.DbType = DbType.Integer;
cmd.Parameters.Add(param);

我知道这是最佳做法。 SQL注入(inject)攻击以这种方式被最小化。但是,当您执行这些语句时,幕后到底发生了什么?最终结果还是 SQL 安全字符串吗?如果不是,最后的结果是什么?这足以防止 SQL 注入(inject)攻击吗?

最佳答案

The MySQL manual page关于准备好的语句提供了大量信息(应该适用于任何其他 RDBMS)。

基本上,你的语句是提前解析和处理的,参数是单独发送的,而不是和SQL代码一起处理的。这消除了 SQL 注入(inject)攻击,因为甚至在设置参数之前就解析了 SQL。

关于c# - 参数绑定(bind) : What happens under the hood?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14934/

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