sql
注入
sql
注入原理
SQL
注入攻击指的是通过构建特殊的输入作为参数传?/p>
Web
应用程序?/p>
而这些输入大
都是
SQL
语法里的一些组合,
通过执行
SQL
语句进而执行攻击者所要的操作?/p>
其主要原?/p>
是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统?/p>
根据相关技术原理,
SQL
注入可以分为平台层注入和代码层注入。前者由不安全的?/p>
据库配置或数据库平台的漏洞所致;
后者主要是由于程序员对输入未进行细致地过滤?/p>
从?/p>
执行了非法的数据查询。基于此?/p>
SQL
注入的产生原因通常表现在以下几方面:①不当?/p>
类型处理?/p>
②不安全的数据库配置?/p>
③不合理的查询集处理?/p>
④不当的错误处理?/p>
⑤转义字
符处理不合适;⑥多个提交处理不当?/p>
sql
注入攻击
当应用程序使用输入内容来构造动?/p>
sql
语句以访问数据库时,会发?/p>
sql
注入攻击?/p>
如果代码使用
存储过程
?/p>
而这些存储过程作为包含未筛选的用户输入的字符串来传递,
也会
发生
sql
注入?/p>
sql
注入可能导致攻击者使用应用程序登陆在数据库中执行命令?/p>
相关?/p>
SQL
注入可以通过测试工具
pangolin
进行。如果应用程序使用特权过高的帐户连接到数据库?/p>
这种问题会变得很严重。在某些
表单
中,用户输入的内容直接用来构造动?/p>
sql
命令,或?/p>
作为
存储过程
的输入参数,这些表单特别容易受到
sql
注入的攻击。而许多网站程序在编写
时,
没有对用户输入的合法性进行判断或者程序中本身?/p>
变量
处理不当?/p>
使应用程序存在安
全隐患。这样,
用户就可以提交一段数据库查询的代码,
根据程序返回的结果,获得一些敏
感的信息或者控制整个服务器,于?/p>
sql
注入就发生了?/p>
防止
SQL
注入
归纳一下,主要有以下几点:
1.
永远不要信任用户的输入?/p>
对用户的输入进行校验?/p>
可以通过
正则表达?/p>
?/p>
或限制长
度;对单引号?/p>
?/p>
"-"
进行转换等?/p>
2.
永远不要使用动态拼?/p>
sql
,可以使用参数化?/p>
sql
或者直接使?/p>
存储过程
进行数据
查询存取?/p>
3.
永远不要使用
管理?/p>
权限的数据库连接?/p>
为每个应用使用单独的权限有限的数据库?/p>
接?/p>
4.
不要把机密信息直接存放,加密或?/p>
hash
掉密码和敏感的信息?/p>
5.
应用的异常信息应该给出尽可能少的提示?/p>
最好使用自定义?/p>
错误信息
对原始错误信
息进行包?/p>