gpt4 book ai didi

c# - 哪种语句对 SQL 注入(inject)更好、更安全?

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

哪个语句更好更安全地防止任何 sql 注入(inject),或者它们是否相同?

com.CommandText = "update tblTableName set Name=@name, Age=@age WHERE ID=1";
com.Parameters.AddWithValue("@name", name.ToString());
com.Parameters.AddWithValue("@age", age.ToString());

com.CommandText = @"update tblTableName set Name=" + name.ToString() + ", Age=" + age.ToString() + " WHERE ID=1";

com.CommandText = "update tblTableName set Name=" + HttpUtility.HtmlEncode(name.ToString()) + ", Age=" + age.ToString() + " WHERE ID=1";

或者有更好的方法吗?感谢您的帮助和意见。

最佳答案

只有第一个阻止 SQL Injection攻击。

您没有使用任何 prepared statementsparameterized sql在你的第二个或第三个例子中。我可以发给他们 18;在您的 age 变量中删除 TABLE tblTableName。使用 HttpUtility.HtmlEncode 方法创建 html 编码的字符串也无济于事。

也不要使用 AddWithValue 方法。有时它可能会产生意想不到的结果。使用 .Add() 方法重载来明确指定您的列类型和大小。

阅读:Can we stop using AddWithValue() already?

关于c# - 哪种语句对 SQL 注入(inject)更好、更安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28957974/

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