asp.net – 这个LINQ statment是否容易受SQL注入攻击?
这个LINQ数据库是否易受SQL注入攻击?
var result = from b in context.tests where b.id == inputTextBox.Text select b; 其中上下文是实体,测试是一个表. 也可以这样将linq作为linq到sql或linq的实体? 解决方法
简短的回答:LINQ不易受SQL注入攻击.
长答案: LINQ不像SQL.幕后有一个完整的库,从编译器从代码生成的表达式树构建SQL,将结果映射到对象 – 当然,它会在事情上保证安全. 见LINQ to SQL FAQ:
在内部,这意味着当LINQ to SQL查询数据库时,而不是使用纯值,它将它们作为SQL参数传递,这意味着它们不能被数据库视为可执行代码.大多数(如果不是全部)ORM映射器也是如此. 比较这两种方法(完全伪代码): string name = "' ; DROP DATABASE master --" run ("SELECT * FROM Authors WHERE Name = '" + name + "'") // oops! // now we'd better use parameters SqlParameter name = new SqlParameter ("@name","' ; DROP DATABASE master --") run ("SELECT * FROM Authors WHERE Name = @name",name) // this is pretty safe 我建议您更深入地了解LINQ语句的实际意义,何时以及如何将其转化为真正的SQL.您可能想了解LINQ standard query operator translation,deferred execution,different LINQ providers等.在LINQ的情况下,就像任何抽象技术一样,知道幕后发生的事情非常有用. 附:每次我看到有关SQL注入的问题,我不禁要记住这个webcomic. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- .net – 如何在MVC 5中设置本地授权认证?
- asp.net – Diffplex入门
- asp.net-mvc – Web api自定义路由
- webapi 利用 ActionFilter 为 ASP.NET Web API 添加 GZip 压
- asp.net-mvc-2 – 如何在Asp.Net MVC中为HiddenFieldFor设置
- asp.net – 如何使用jQuery ajax避免快速结果的“闪烁”进度
- asp.net – 如何使用css文件创建圆角按钮?
- asp.net-mvc – 在MVC中没有持久化Cookie
- asp.net三层架构增删改查
- asp.net-mvc-3 – EF 4.1 – 模型关系
- asp.net-mvc – 不使用SignalR时,ELMAH中出现Sig
- asp.net – 从源代码管理中排除app.config?
- .net core中的对象池
- asp.net-mvc-3 – 使用Magical Unicorn的ASP.NET
- asp.net – FileUpload.hasFile始终为False
- asp.net – 密码和确认密码
- ASP.NET LoginUser.DestinationPageUrl无法正常工
- asp.net – 在MVC中使用iTextSharp在MVC Razor中
- asp.net-mvc – MVC单元测试控制器的优点
- asp.net – FF和IE不从CSS加载img src