繁体   English   中英

以下代码是否可能受到注入攻击?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM