[英]Is injection attack possible on the following code?
我必须为项目的每种Web应用程序攻击类型创建两个应用程序。 一种攻击有效,另一种无效。 在编写用于sql注入的代码时,我将使用以下代码:
EmpTable result = ctx.Database.SqlQuery<EmpTable>("Select * from EmpTable where username = '" + TxtUsername.Text + "'and password = '" + TxtPassword.Text + "'").FirstOrDefault();
EmpTable result = (from reff in ctx.EmpTables.Where(p => (p.Username == TxtUsername.Text) && (p.Password == TxtPassword.Text)) select reff).FirstOrDefault();
我只想确保没有办法对无敌者进行注射攻击。 请告诉我代码是否真的无懈可击。
是的,在第二种情况下,我认为这是无懈可击的,因为您将责任传递给了LINQ(以及Entity Framework,或NHibernate或其他类似的ORM工具)以对数据库执行查询。 由于它提供了此任务,因此必须安全处理SQL。
在第一种情况下,对于示例,应使用Parameter
以避免SQL Injection。
ctx.Database.ExecuteSqlCommand(@"select * from EmpTable where username = @user and password = @pass",
new SqlParameter("user", TxtUsername.Text),
new SqlParameter("pass", TxtPassword.Text));
Obs:我没有尝试
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.