Ars*_*nko 3 .net t-sql sql-injection escaping sqlcommand
SqlCommand.Parameters.AddWithValue()查询有什么变化?
我希望:
它取代了每一个'角色'',
如果参数值是一个字符串或必须转换为字符串的东西,它会围绕值',所以例如select * from A where B = @hello将给出select * from A where B = 'hello world'.
如果参数值像整数一样"安全",它将按原样插入查询中,不带引号,因此select * from A where B = @one会给出select * from A where B = 1.
还有其他我不知道的变化吗?
ADO.NET SqlClient驱动程序不会进行任何替换!这是一种常见的误解 - 它避免了更换任何东西的麻烦.
它的作用是将您的查询@param1 ... @paramN直接传递给SQL Server,以及一组参数名称/值对.SQL Server然后使用sp_executesql存储的proc 执行那些.
没有做任何替换,在客户端没有"将完整的SQL语句串在一起" - 没有这样的.如果这就是ADO.NET运行时正在做的事情,它也会非常容易受到SQL注入攻击.
| 归档时间: |
|
| 查看次数: |
1666 次 |
| 最近记录: |