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. 避免直接向用户显示数据库错误
攻击者可以使用这些错误消息来获取有关数据库的信息。
相关文章
- 如何对抗、预防 SQL注入 攻击
- 【Mysql sql inject】POST方法BASE64编码注入write-up
- 网站入侵注入的几种方法总结【笔记】
- PHP+Mysql防止SQL注入的方法
- 利用Attribute简化Unity框架IOC注入
- SQL注入之文件读写
- @Autowired注入了dao,为什么还要写getDao(){return userDao}这个方法?有什么作用?
- Angular 通过依赖注入机制注入一个对象的例子,什么是 ElementInjector
- 通过PreparedStatement预防SQL注入
- 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 ExpandoMetaClass 进行方法注入 )
- 【错误记录】Groovy 注入方法报错 ( Cannot add new method [hello] for arguments [[]]. It already exists )
- Java Instrumentation 内存马——主要是利用Instrumentation Java API来做内存注入,会用到反射机制,文中提到检测思路:注入jar包-> dump已加载class字节码->反编译成java代码-> 源码webshell检测
- SQL注入 对方使用base64进行编码防止注入的破解方法 太简单。。。
- SQL注入 Sqli-labs-Less-21(笔记)——还是回显注入 使用union select即可 但是要注意sql括号闭合 也可以报错注入
- WEB漏洞攻防 - SQL注入 - 高权限注入