2013-04-24 53 views
0

我将使用一个选择在asp.net网页,其中即:Oracle数据库和.NET(C#) - 如何防止SQL注入

string name=TexBox1.Text; 
string pas=TextBox2.Text; 
string c="select * from users where name='"+name+"' and password ='"+pas+"'"; 

有没有什么方法来防止SQL注入。

+7

使用准备好的语句。 – 2013-04-24 12:33:16

+0

你能举一个例子吗? – 2013-04-24 12:35:01

+2

另外,千万不要将密码本身存储在数据库中。总是使用加密盐的密码散列,可能使用Oracle的DBMS_CRYPTO PL/SQL包。请参阅http://stackoverflow.com/questions/8339107/prepared-statement-in-asp-net-c-sharp-when-using-sql-server – 2013-04-24 12:39:19

回答

0

首先,你必须在你的代码验证输入数据,然后,因为如果发生未处理的异常使用它像参数.. 和你正在返回如“连接字符串”你给有用的信息,如“列”敏感数据和“表格”名称,这是危险的。 其次,添加一个“数据访问层”来处理你的代码,而不是在“代码隐藏”中。您可以使用“存储过程”并从您的代码中调用它们,通过这种方式您可以隐藏编程逻辑的查询并仅将参数传递给存储过程,并且他可以完成这项工作,并且只会在出现异常发生。

此预防措施是小应用程序中的基础知识,但存在许多其他避免SQL注入的方法。

+0

我' m使用重要数据,所以我将使用哈希或其他强大的方法,感谢您的想法,对不起,我买了你的时间 – 2013-04-24 13:03:15

+0

散列只适用于密码,如果发生任何错误,你会返回敏感数据,如表和列名称,这是SQL注入。我建议你验证输入,如果你没有时间来避免SQL注入,希望这个帮助;-) – 2013-04-24 13:10:05