• 章节:19
  • 访问:1126
  • 时长:00:10:05
  • 日期:2019-06-02 06:36

1 对表单数据入库前进行危险字符过滤,比如? 单引号等等,使用正则表达式过滤传入的参数

2 参数化查询 不同的语言有不同的处理方式,参数化查询可以规定参数类型

3 尽量少使用拼接sql的方式来查询数据,比如使用ORM框架,大多数ORM框架内部做了防止SQL注入的处理

sql注入,其实就是 用户输入的参数 影响了sql脚本。导致执行了不安全的sql脚本,然后让用户看到了不安全的信息。

   SELECT [ID]
      ,[SNO]
      ,[SNAME]
  FROM [StudentCourse].[dbo].[S]
  where SNO = 5
  
  --如果没有过滤的话,比如黑客过意传下面的参数“5 or 1 = 1”
  SELECT [ID]
      ,[SNO]
      ,[SNAME]
  FROM [StudentCourse].[dbo].[S]
  where SNO = 5 or 1 = 1
  
--如果加入了delete 或者update 那么就根据危险了
  SELECT [ID]
      ,[SNO]
      ,[SNAME]
  FROM [StudentCourse].[dbo].[S]
  where SNO = 5 or 1 = 1;delete from SNO;update admin set pwd = (select pwd from user where id = 黑客的用户id)