当前位置:  开发笔记 > 编程语言 > 正文

INSERT上的SQL注入

如何解决《INSERT上的SQL注入》经验,为你挑选了2个好方法。

我在我们公司的Intranet上创建了一个小型调查网页.无法从外部访问此网页.

表单只是几个单选按钮和一个注释框.

我想保持良好的编码实践,并希望防范SQL注入.

SQL注入是否可以在带有文本框注释的insert语句中发生?如果是这样,我如何使用.NET 2.0防范它?



1> Dave Webb..:

注入可能发生在任何未正确运行的SQL语句上.

例如,让我们假装您的注释表有两个字段,一个整数ID和注释字符串.所以你INSERT如下:

 INSERT INTO COMMENTS VALUES(122,'I like this website');

考虑有人输入以下评论:

'); DELETE FROM users; --

如果您只是将注释字符串放入SQL中而不进行任何处理,则可以将您的单个字符转换INSERT为以下两个语句,后跟注释:

INSERT INTO COMMENTS VALUES(123,''); DELETE FROM users; -- ');

这会删除users表格中的所有内容.而且有些人愿意花一整天的时间找到正确的表格,以便使用反复试验和各种技巧来清空. 以下是如何执行SQL注入攻击的说明.

您需要使用参数化SQL语句来防止这种情况.

这不仅仅是出于安全原因.例如,如果您正在天真地创建SQL语句,请注意以下注释:

I'm just loving this website

会导致SQL语法错误,因为撇号被SQL解释为结束引号.


撇号上的好点 - 我一直在使用string.replace方法 - 但我可以看到这更容易.
我们有一个名叫Ja'Net的女孩为我的公司工作.这真的搞砸了一些东西.大部分代码都是在我到达之前编写的.

2> tvanfosson..:

使用参数化查询,以便自动为您引用文本.

SqlCommand command = connection.CreateCommand();
command.CommandText = "insert into dbo.Table (val1,val2,txt) values (@val1,@val2,@txt)";
command.AddParameterWithValue( "val1", value1 );
command.AddParameterWithValue( "val2", value2 );
command.AddParameterWithValue( "txt", text );

...

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有