SQL注入是什么,怎么防止SQL注入?

一、什么是SQL注入?
SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。

二、SQL注入总体思路
1、寻找到SQL注入的位置
2、判断服务器类型和后台数据库类型
3、针对不通的服务器和数据库特点进行SQL注入攻击

三、以登录为案例,数据库为MySQL,要求输入用户名和密码
点击登陆,如果没有做特殊处理,那么这个非法用户就很得意的登陆进去了。(当然现在的有些语言的数据库API已经处理了这些问题)

从理论上说,后台认证程序中会有如下的SQL语句:

String sql="select * from table where username='"+userName+"’and password='"+password+” '”;

当输入了下面的用户名和密码,上面的SQL语句变成:

SELECT * FROM table WHERE username='1’or 1=1 # and password=''

条件后面username=‘1’ or 1=1 然后后面加#将后面的语句注释,让他们不起作用,这样语句就是恒真了,用户能轻易骗过系统,获取合法身份。SQL注入还可以用来删除、添加、修改数据库中的记录等等…

四、怎么防止sql注入?
1、不要图一时方便使用SQL语句直接拼接。
2、如果用SQL语句,那就使用参数化,添加Param。
3、尽可能的使用存储过程,安全性能高而且处理速度也快。
4、屏蔽SQL注入。

SQL注入是什么,怎么防止SQL注入?相关推荐

  1. SQL Server安全-加密术和SQL注入攻击

    SQL Server上的加密术 SQL Server上内置了加密术用来保护各种类型的敏感数据.在很多时候,这个加密术对于你来说是完全透明的:当数据被存储时候被加密,它们被使用的时候就会自动加密.在其他 ...

  2. php万能注入密码,php下的SQL注入万能用户名和密码

    1.针对有单引号的情况 : 万能密码 : select * from users where username='xxxx' and password='xxxxxx' or 1='1'; 万能用户名 ...

  3. groovy怎样从sql语句中截取表名_sql注入mysql篇

    SQL注入 __0x01 ♛Sql注入原理 Sql注入顾名思义是没有对用户输入的参数进行过滤导致测试者可以将一段非正常语句插入到查询语句中,由web应用带入到数据库中执行,从而读取数据库中的数据. _ ...

  4. SQL注入 1-3_基于post报错注入

    ** SQL注入 1-3_基于post报错注入 ** 一.概念 客户端提交参数基于post 1.基于post注入不会拼接到url 2.相对get提交参数更加安全 3.但是依然可以使用代理(中间人)截断 ...

  5. sql注入 1-1_基于报错的注入

    sql注入 1-1_ 基于报错注入 1.判断是否存在报错注入 通过 id =1 可以看到服务器返回正常页面 通过 id=1 and 1=1 通过 id=1 and 1=2 服务器也返回正常 通过 id ...

  6. 使用jdbc执行SQL实现登录查询2-避免SQL注入版

    配置文件及工具类参考1 package com.jdsc;import javax.rmi.CORBA.Util; import java.sql.*; import java.util.Scanne ...

  7. preparedstatement打印sql语句_Mybatis是这样防止sql注入的

    链接:https://juejin.im/post/5e131203e51d4541082c7db3 Mybatis这个框架在日常开发中用的很多,比如面试中经常有一个问题:$和#的区别,它们的区别是使 ...

  8. java中sql语句怎么把开始和结束时间作为参数写sql查询_聊一聊MyBatis 和 SQL 注入间的恩恩怨怨

    整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 引言 MyBatis 是一种持久层框架,介于 JDBC 和 Hi ...

  9. 为什么preparedstatement能防止sql注入_使用Python防止SQL注入攻击的实现示例

    文章背景 每隔几年,开放式Web应用程序安全项目就会对最关键的Web应用程序安全风险进行排名.自第一次报告以来,注入风险高居其位!在所有注入类型中,SQL注入是最常见的攻击手段之一,而且是最危险的.由 ...

  10. python防止sql注入的方法_python解决sql注入以及特殊字符

    python往数据库插入数据, 基础做法是: cur=db.cursor() sql = "INSERT INTO test2(cid, author, content) VALUES (1 ...

最新文章

  1. 利用java反射机制 读取配置文件 实现动态类载入以及动态类型转换
  2. socket.io,io=Manager(source, opts)
  3. Thinkphp 逻辑与,逻辑或的复合查询
  4. 步步为营-72-asp.net简单练习(通过webForm实现一些简单实例)
  5. JMeter获取JSON内容
  6. python 连接mysql_python连接MySQL
  7. 如何打造应对超大流量的高性能负载均衡?
  8. Exchange 日常管理之二:设置邮件转发
  9. 目标追踪论文之狼吞虎咽(2):在线被动攻击学习
  10. Widevine DRM介绍
  11. Q学习(Q-learning)简单理解
  12. 将CF卡移动磁盘标识改为本地磁盘标识的软件
  13. 网络营销的方案及技巧
  14. 优动漫PAINT小技巧——描边功能的使用
  15. 大规模容器镜像管理方案
  16. layui菜鸟教程--乐字节前端
  17. 粒子群优化算法实现寻找函数最值
  18. HP DeskJet 2131 喷墨一体打印机打印设置教程
  19. sudo密码错误的解决办法
  20. 「多语言图像描述」最强评估基准XM3600来了!涵盖36种语言

热门文章

  1. 微信小程序标签和html标签对比,微信小程序的标签和html标签比较
  2. redis锁原理步骤解析
  3. jQuery---JQuery remove(),removeAttr()和removeClass()示例区别
  4. android string html 字间距,html段落内文字设置字间距间隔
  5. suse linux修改sftp端口,open suse 13 搭建 sftp
  6. 本周十大iOS应用推荐
  7. 打开catia界面全是白色怎么办_【软件技巧】CATIA使用手册高级技巧54条
  8. 帮助家长找到适合孩子的优质应用
  9. C#线程锁(Lock)
  10. 内网(离线)如何安装vue