[安全相关]SQL注入

SQL注入常用方式

(1) or 1=1

利用or使where的条件无效,从而绕过where验证:

http://localhost:3452/ExcelUsingXSLT/Default.aspx?jobid=1‘or‘1‘=‘1

等效SQL语句如下:

SELECT     job_id, job_desc, min_lvl, max_lvl
FROM         jobs
WHERE     job_id = 1 OR 1 = 1

 

(2) --

利用--注释原SQL语句,并插入新语句

http://localhost:3452/ExcelUsingXSLT/Default.aspx?jobid=1‘or 1=(select count(*) from job)--

使用--注释掉后面的SQL,并利用常量1=()执行自定义SQL

SELECT       job_id, job_desc, min_lvl, max_lvl 
FROM         jobs 
WHERE      job_id=1or 1=(select count(*) from job) --

 

(3)

 

如何防止SQL入住?

(1)使用正则表达式过滤 单引号,减号等敏感字符

(2)不能拼接SQL语句,使用参数化SQL或者使用存储过程

  在使用参数化查询的情况下,数据库服务器不会将参数的内容视为SQL指令的一部份来处理,而是在数据库完成SQL指令的编译后,才套用参数运行,因此就算参数中含有指令,也不会被数据库运行。Access、SQL Server、MySQL、SQLite等常用数据库都支持参数化查询。存储过程同理。

(3)不要使用管理员权限运行SQL,每种操作规定有限的权限

(4)敏感信息不能明文存储

(5)不要给出原生SQL错误提示,会泄露数据库信息,自定义错误提示

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。