zl程序教程

您现在的位置是:首页 >  后端

当前栏目

sql注入原理和防范方法

2023-09-11 14:19:27 时间

sql注入攻击原理

  在sql语法中直接将用户数据以字符串拼接的方式直接填入sql中,那么极有可能直接被攻击者通过注入其他语句来执行攻击操作,其中通过执行注入的sql语句可以执行:获取敏感数据、修改数据、删除数据库表等等风险操作。

  攻击者可能采取的注入方式:数字类型和字符串类型注入

  攻击者可能提交的方式:GET注入、POST注入、COOKIE注入、HTTP注入。

  攻击者获取信息的可能采取的方式:基于布尔的盲注、基于时间的盲注、基于报错的注入。

  sql注入攻击防范的方法

  1、定制黑白名单:将常用请求定制为白名单,一些攻击频繁的攻击限制其为黑名单,可以通过服务器安全狗进行实现,服务器安全狗可以针对攻击类型把对方ip进行封禁处理,也可也对常用ip进行加白名单。

  2、限制查询长度和类型:由于SQL注入过程中需要构造较长的SQL语句,同时有些不常用的查询类型我们可以进行限制,凡是不符合该类请求的都归结于非法请求予以限制。

  3、数据库用户的权限配置:根据程序要求为特定的表设置特定的权限,如:某段程序对某表只需具备select权限即可,这样即使程序存在问题,恶意用户也无法对表进行update或insert等写入操作。

  4、限制目录权限:务器管理员还应在IIS中为每个网站设置好执行权限,WEB目录应至少遵循“可写目录不可执行,可执行目录不可写”的原则,在次基础上,对各目录进行必要的权限细化。

下面是在开发过程中可以避免 SQL 注入的一些方法。

1. 避免使用动态SQL

避免将用户的输入数据直接放入 SQL 语句中,最好使用准备好的语句和参数化查询,这样更安全。

2. 不要将敏感数据保留在纯文本中

加密存储在数据库中的私有/机密数据,这样可以提供了另一级保护,以防攻击者成功地排出敏感数据。

3. 限制数据库权限和特权

将数据库用户的功能设置为最低要求;这将限制攻击者在设法获取访问权限时可以执行的操作。

4. 避免直接向用户显示数据库错误

攻击者可以使用这些错误消息来获取有关数据库的信息。