| 防范Sql注入式攻击 |
| 防范Sql注入式攻击 | ||
| 作者:佚名 文章来源:不详 更新时间:2008-1-20 16:42:23 【字体:小 大】 | ||
动态生成Sql命令时没有对用户输入的数据进行验证是Sql注入攻击得逞的主要原因 string name = GetUserInput("BookName"); 如果
//id和password直接来自用户的输入。未做处理 tring script = "select * from table_user where User_ID = '" + id? + "' and User_Password? = '" + password? + "' "; 如果用户输入的password为“ or ''=' ”,那么生成的script就为 再比如,入侵者会把一些巧妙伪装的代码嵌入到你动态生成的Sql命令中,比如
当然实际上的攻击没有这么简单,攻击者还会利用系统设计的其他漏洞。比如程序把数据库返回的出错信息没有进行转换就直接输出给用户看,那么攻击者就设计一些sql语句诱导系统返回需要的信息
? 防范sql注入式攻击 最小权限原则。特别是不要用dbo或者sa账户,为不同的类型的动作或者组建使用不同的账户,最小权限原则适用于所有与安全有关的场合 对用户输入进行检查。对一些特殊字符,比如单引号,双引号,分号,逗号,冒号,连接号等进行转换或者过滤;使用强数据类型,比如你需要用户输入一个整数,就要把用户输入的数据转换成整数形式;限制用户输入的长度等等。这些检查要放在server运行,client提交的任何东西都是不可信的 使用存储过程,如果一定要使用sq语句,那么用标准的方式组建sql语句,比如可以利用parameters对象,避免用字符串直接拼sq命令。 当sql运行出错时,不要把数据库返回的错误信息全部显示给用户,错误信息经常会透露一些数据库设计的细节 针对常用的sql注入式攻击方式对症下药 |
||
|
||
| 文章录入:YesHack.Com 责任编辑:YesHack.Com | ||
您现在的位置: