到底是什么让它如此SQLParameter防止了SQL InAction攻击.NET参数化查询?它只是剔除了任何可疑的角色,还是有更多的东西?

有没有人判断过,当你传递恶意输入时,SQL Server到底得到了什么?

相关:Can you use a SQLParameter in the SQL FROM statement?

推荐答案

基本上,当使用SQLParameters执行SQLCommand时,参数永远不会直接插入到语句中.而是调用一个名为sp_executesql的系统存储过程,并给出SQL字符串和参数array.

这样使用时,参数被隔离并作为数据处理,而不必从语句中解析出来(因此可能会对其进行更改),因此参数包含的内容永远无法"执行".你会得到一个很大的错误,参数值在某种程度上是无效的.

.net相关问答推荐

EF核心类似功能T-SQL UPDATE FROM

.NET模拟具有泛型返回类型的方法

为什么Regex.Escape支持数字符号和空格?

使用React路由加载器获取数据不能正常工作

为什么 PropertyInfo.SetValue 在此示例中不起作用以及如何使其起作用?

Dotnet 反射:使用 F# 中的out参数调用 MethodInfo 上的调用

NonSerialized 属性

value 的默认参数必须是编译时间常数?

将 int 转换为 .NET 中的位数组

如何在任务栏顶部全屏显示 Windows 窗体?

有什么方法可以使用 .NET 应用程序使用 git 吗?

extern 在 C# 中是如何工作的?

实例化具有运行时确定类型的对象

如何将字符串列表数据绑定到 WPF/WP7 中的 ListBox?

在 Moq Callback() 调用中设置变量值

如何将枚举值序列化为 int?

为什么使用 ImmutableList 而不是 ReadOnlyCollection?

X509Certificate 构造函数异常

在 .NET 中,null 的哈希码是否应该始终为零

可以从 C# 调用 C++ 代码吗?