在我们登陆验证时会发现sql注入的现象。
1.sql注入发生原因
因为如果用户在用户名上输入的是' or 1=1 # 时,我们得到的sql语句是select * from shop_user where username='' or 1=1#' and password='d41d8cd98f00b204e9800998ecf8427e'
由于#在sql语句是注释的作用,所以#后面被注释了,但是前面的where语句是永真式,因此登陆会成功
2.解决办法
1)对$usesname使用//addslashes():这个额函数会使用反斜线引用特殊字符
2)使用mysqli_escape_string函数对$username处理,效果跟addslashes()一样。

sql注入预防的更多相关文章

  1. SQL注入-预防

    输入验证: 检查用户输入的合法性,确信输入的内容只包含合法的数据.数据检查应当在客户端和服务器端都执行服务器端验证,是为了弥补客户端验证机制脆弱的安全性. 输入验证最好使用“白名单”校验的方式. 输入 ...

  2. 如何预防SQL注入,XSS漏洞(spring,java)

    SQL注入简介 SQL注入是由于程序员对用户输入的参数没有做好校验,让不法分子钻了SQL的空子, 比如:我们一个登录界面,要求用户输入用户名和密码: 用户名: ' or 1=1-- 密码: 点击登录之 ...

  3. pymysql 解决 sql 注入问题

    1. SQL 注入 SQL 注入是非常常见的一种网络攻击方式,主要是通过参数来让 mysql 执行 sql 语句时进行预期之外的操作. 即:因为传入的参数改变SQL的语义,变成了其他命令,从而操作了数 ...

  4. Node.js 项目中解决 SQL 注入和 XSS 攻击

    1.SQL 注入 SQL 注入,一般是通过把 SQL 命令插入到 Web 表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令. SQL 注入示例 在登录界面,后端会根 ...

  5. 解决 SQL 注入和 XSS 攻击(Node.js 项目中)

    1.SQL 注入 SQL 注入,一般是通过把 SQL 命令插入到 Web 表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令. SQL 注入示例 在登录界面,后端会根 ...

  6. 怎么预防sql注入攻击

    假设sql是搜索用户A的文章,sql会是这样: select * from table where owner='A'; sql注入攻击者会修改用户名来实现攻击,例如把A 改成A' or 1='1 组 ...

  7. 预防sql注入

    前言: 这两天做项目的时候发现很多小地方没有注意js或者sql注入,平时登录都是md5加密,今天突然发现记录一下. 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字 ...

  8. sql注入学习笔记,什么是sql注入,如何预防sql注入,如何寻找sql注入漏洞,如何注入sql攻击 (原)

    (整篇文章废话很多,但其实是为了新手能更好的了解这个sql注入是什么,需要学习的是文章最后关于如何预防sql注入) (整篇文章废话很多,但其实是为了新手能更好的了解这个sql注入是什么,需要学习的是文 ...

  9. 利用PreparedStatement预防SQL注入

    1.什么是sql注入 SQL 注入是用户利用某些系统没有对输入数据进行充分的检查,从而进行恶意破坏的行为. 例如登录用户名采用  ' or 1=1 or username=‘,后台数据查询语句就变成 ...

随机推荐

  1. ubuntu开启crontab日志

    今天发现Ubuntu的/var/log下没有cron日志,用下面的命令即可开启: -default.conf cron.*              /var/log/cron.log #将cron前 ...

  2. 『Golang』在Golang中使用json

    由于要开发一个小型的web应用,而web应用大部分都会使用json作为数据传输的格式,所以有了这篇文章. 包引用 import ( "encoding/json" "gi ...

  3. Prometheus 普罗米修斯监控

    周末在家无聊 看新闻 看到关于监控的东西 拿来玩玩 试一下 感觉还蛮有意思 特此记录一下 这里只介绍客户端的配置 1:首先在POM中添加依赖 <dependency> <groupI ...

  4. JavaWeb 基于Session的用户登陆注销实现

    通过Session来存储用户的部分登陆信息来验证用户是否在线,这应该时最容易实现的一种Web端方案,本文以SSM(Spring.SpringMVC.myBatis)框架为载体,来具体实现这套登陆系统. ...

  5. 进程id

    我们知道怎么通过fork函数创建(或者说是复制)一个进程,但是我们要怎么样操作这个被创建出来的进程呢?那就需要用到他的进程id,所以就要获取进程id,一下提供一些获取进程id的函数和其使用方法. 1) ...

  6. LaTex标准article文件框架解析

    新建一个LaTex-Article文件 生成的文件框架代码 % ---------------------------------------------------------------- % A ...

  7. 201621044079 week05-继承、多态、抽象类与接口

    作业05-继承.多态.抽象类与接口 1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 接口 interface关键字 implements has-a;comparable co ...

  8. PhalApi 1.4.2 经典封存版 - 码云

    https://www.phalapi.net/ PhalApi 1.x 是经典封存版本,已停止更新,历练考验,可放心使用. 主要采用PEAR命名规范,遵循PSR-0,不支持命名空间和composer ...

  9. 并发(一) Semaphore

    Semaphore 控制对资源的并发访问数,构造时如果传参为1,则近似于ReentrantLock,差别在于锁的释放.可以一个线程获取锁,另外一个线程释放锁,在一些死锁处理的场合比较适用. 如上所示, ...

  10. JAVA高并发处理------多线程

    线程安全概念:当多个线程访问某一个类(对象或方法)时,这个对象始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的. 分析:当多个线程访问myThread的run方法时,以排队的方式进行处 ...