首页 > 数据库 >SQL注入

SQL注入

时间:2022-11-18 23:45:20浏览次数:35  
标签:语句 数据库 查询 参数 SQL 注入

SQL注入

漏洞描述

web程序中对于用户提交的参数未做过滤直接拼接到SQL语句中执行,导致参考中的特殊字符破坏了SQL语句原有的逻辑,攻击者可以利用改漏洞执行任意SQL语句,如查询数据、下载数据、写入webshell、执行系统命令以及绕过登录限制等。

攻击样例

image
image
image

修复建议

代码层最佳防御sql漏洞方案:使用预编译sql语句查询和绑定变量。
1、使用预编译语句,使用PDO需要注意不要将变量直接拼接到PDO语句中。所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供参数化SQL语句执行接口,使用此接口可以非常有效防止SQL注入攻击。
2、建议在代码中对数字类型的参数先进行数字类型变换,然后再代入到SQL查询语句中,这样任何注入行为都不能成功。并且考虑过滤一些参数,比如get参数和post参数中对于SQL语言查询的部分。
3、对进入数据库的特殊符号,特别是一些特殊字符,比如单引号,双引号,分号,逗号,冒号(’''<>&*;等)进行转义处理,或编码转换。
4、确认每种数据的类型,比如数字类型的数据就必须是数字,数据库中的存储字段必须对应未int型。
5、数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。
6、网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。
7、严格限制网站用户的数据库操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
8、屏蔽网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。
9、过滤危险字符,例如:采用正则表达式匹配union、sleep、and、select、load_file等关键字,如果匹配到则终止运行。在GET提交的数据中进行过滤select 、update、delete、insert等其他语句。

标签:语句,数据库,查询,参数,SQL,注入
From: https://www.cnblogs.com/kingjinsd/p/16905257.html

相关文章

  • MySQL
    数据库当中最基本的单位是表:table姓名性别年龄(列:字段)张三男20—->行(记录)李四女21王五男22数据库当中是以表格的形式表示数据的因为表......
  • MySQL的SQL优化常用30种方法[转]
    MySQL的SQL优化常用30种方法1、对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。2、应尽量避免在where子句中使用!=或<>操作符,......
  • sql 函数
               ......
  • 开发笔记1.1-配置可视化MySQL工具phpMyAdmin
    配置好phpMyAdmin前提是需要安装http服务器、php、phpMyAdmin1.安装http服务器#安装httpd服务器yuminstallhttpd#开启http服务器并设置开机启动sudosystemctlst......
  • MySQL 数据列长度超长处理策略 & STRICT_TRANS_TABLES
    对于一个数据库表column例如长度namevarchar(8)当用insert长度超过8的时候一般会报错,但有时候也会阶段报错。那具体跟什么有关系呢?其实就是sql_mode的配置有关,具体结论......
  • MYSQL性能优化的最佳20+条经验
    MYSQL性能优化的最佳20+条经验 2009年11月27日  陈皓 评论 169条评论  251,274人阅读今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其......
  • flask SQLAlchemy 增删改查
    前言一直在用flask+ SQLAlchemy,每次数据联动,因为踩过坑,就更新一下自己的认识,若有错误,请谅解准备模块click==8.1.3Flask==1.1.2Flask-SQLAlchem......
  • SQL基础篇(一)---JOIN语句执行流程&ON与WHERE的区别
    本文主要记录了MySQL中的JOIN语句具体执行流程,同时分析了ON与WHERE条件的区别。1.执行流程一个完整的SQL语句中会被拆分成多个子句,子句的执行过程中会产生......
  • mysql导出 TIDB导入
    tiupdumpling-h10.10.14.229-P22066-uroot-p123456-t16-r200000-F256MiB-Btest_db-o's3://dsideal/HuangHai/TiDB?access-key=AK&secret-access-key=SK......
  • Cause: org.postgresql.util.PSQLException: ERROR: could not determine data type o
      1 Cause:org.postgresql.util.PSQLException:ERROR:couldnotdeterminedatatypeofparameter$1  无法确定参数类型: 找到对应的入参  进行强......