PHP mysql_real_escape_string() 函数
  PHP MySQL 函数
  定义和用法
  mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。
  下列字符受影响:
  \x00\n\r\'"\x1a
  如果成功,则该函数返回被转义的字符串。如果失败,则返回 false.
  语法
  mysql_real_escape_string(string,connection)
  参数 描述
  string 必需。规定要转义的字符串。
  connection 可选。规定 MySQL 连接。如果未规定,则使用上一个连接。
  说明
  本函数将 string 中的特殊字符转义,并考虑到连接的当前字符集,因此可以安全用于 mysql_query()。
  提示和注释托福答案 www.yztrans.com
  提示:可使用本函数来预防数据库攻击。
  例子
  例子 1
  <?php
  $con = mysql_connect("localhost", "hello", "321");
  if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
  // 获得用户名和密码的代码
  // 转义用户名和密码,以便在 SQL 中使用
  $user = <CODE>mysql_real_escape_string($user)</CODE>;
  $pwd = <CODE>mysql_real_escape_string($pwd)</CODE>;
  $sql = "SELECT * FROM users WHERE
  user='" . $user . "' AND password='" . $pwd . "'"
  // 更多代码
  mysql_close($con);
  ?>
  例子 2
  数据库攻击。本例演示如果我们不对用户名和密码应用 mysql_real_escape_string() 函数会发生什么:
  <?php
  $con = mysql_connect("localhost", "hello", "321");
  if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
  $sql = "SELECT * FROM users
  WHERE user='{$_POST['user']}'
  AND password='{$_POST['pwd']}'";
  mysql_query($sql);

  // 不检查用户名和密码
  // 可以是用户输入的任何内容,比如:
  $_POST['user'] = 'john';
  $_POST['pwd'] = "' OR ''='";
  // 一些代码…
  mysql_close($con);
  ?>
  那么 SQL 查询会成为这样:
  SELECT * FROM users
  WHERE user='john' AND password='' OR ''=''
  这意味着任何用户无需输入合法的密码即可登陆。
  例子 3
  预防数据库攻击的正确做法:
  <?php
  function check_input($value)
  {
  // 去除斜杠
  if (get_magic_quotes_gpc())
  {
  $value = <code>stripslashes($value)</CODE>;
  }
  // 如果不是数字则加引号
  if (!is_numeric($value))
  {
  $value = "'" . <CODE>mysql_real_escape_string($value)</CODE> . "'";
  }
  return $value;
  }
  $con = mysql_connect("localhost", "hello", "321");
  if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
  // 进行安全的 SQL
  $user = check_input($_POST['user']);
  $pwd = check_input($_POST['pwd']);
  $sql = "SELECT * FROM users WHERE
  user=$user AND password=$pwd";
  mysql_query($sql);
  mysql_close($con);
  ?>

php如何做数据库攻击的更多相关文章

  1. 谈一下我们是怎么做数据库单元测试(Database Unit Test)的

    作者水平有限,如有错误或纰漏,请指出,谢谢. 背景介绍 最近在团队在做release之前的regression,把各个feature分支merge回master之后发现DB的单元测试出现了20多个失败 ...

  2. 探究Go-YCSB做数据库基准测试

    本篇文章开篇会介绍一下Go-YCSB是如何使用,然后按照惯例会分析一下它是如何做基准测试,看看它有什么优缺点. 转载请声明出处哦~,本篇文章发布于luozhiyun的博客: https://www.l ...

  3. Hibernate和jsp做数据库单表的增删改查

    虽然很基础,但是我转牛角尖了~~~~这是几个文件 1.最重要的.Java文件 package com.chinasofti.hibb.struts; import org.hibernate.Sess ...

  4. 用mybatis做数据库处理 代码中的字段大小写 要和mapper映射设置的大小写一致(这TM不废话么,原谅我渣!~~)

    简单描述情况:其实这个问题怎么说呢,有人给你说,你肯定能意识到,必须大小写对应的嘛.emmmm我现在才意识到是因为:自己在下边敲代码,配的mapper文件并没有把属性变量,和数据库里的段单独提出来做映 ...

  5. .Net core使用EF Core Migration做数据库升级

    ---恢复内容开始--- (1)VS Code下创建含有授权功能的并且使用localdb作为数据库的命令 dotnet new -au individual -uld --name identityS ...

  6. 使用GTID给Galera集群做数据库异步复制

    一.为什么要做Galera集群异步复制 Galera集群解决了数据库高可用的问题,但是存在局限性,例如耗时的事务处理可能会导致集群性能急剧下降,甚至出现阻塞现象.而不幸的是,类似报表等业务需求就需要做 ...

  7. Spring Boot 实用MyBatis做数据库操作

    前言: 本项目基于maven构建,使用mybatis-spring-boot作为spring-boot项目的持久层框架 spring-boot中使用mybatis持久层框架与原spring项目使用方式 ...

  8. SQL2014做数据库主从镜像备份(也可以用于高可用)备忘(非域控)。

    部份内容参考原始文章链接:https://www.cnblogs.com/stragon/p/5643754.html ,同时比较有参考价值的文章:https://blog.csdn.net/sqls ...

  9. Laravel中如何做数据库迁移

    总的来说,做一次独立数据库迁移只需要三步,分别是创建迁移文件.修改迁移文件.运行迁移 1.创建数据库迁移文件php artisan make:migration create_articles_tab ...

随机推荐

  1. (?m) 可以让.去匹配换行

    <pre name="code" class="html"># User@Host: zjzc_app[zjzc_app] @ [10.171.24 ...

  2. HDU 4627 There are many unsolvable problem in the world.It could be about one or about zero.But this time it is about bigger number.

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82974#problem/E 解题思路:数论,从一个数的中间开始往两边找,找到两 ...

  3. Hot to get clicked cell column in DevExpress XtraGrid

    To accomplish this task, use the GridView.RowCellClickevent. Please note that this event will not fi ...

  4. RMQ——忠诚题解

    题目:忠诚 描述: [题目描述] 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满 意.但是由于一些人的 ...

  5. Java学习日记-12 集合(2)

    一.List<E>接口(超级接口Collection,List比Collection多重载了一些索引作为形参的方法)1.实现类ArrayList\LinkedListArrayList顺序 ...

  6. selenium webdriver python 元素定位

    总结   定位查找时,返回查找到的第一个match的元素.如果找不到,则 raise NoSuchElementException   单个元素定位: find_element_by_idfind_e ...

  7. K - Transformation-hdu 4578(多操作混合区间更新)线段树

    题意:有四种操作 1,  区间 [l, r] 的值都加上 C 2,  区间 [l, r] 的值都乘上 C 3,  区间 [l, r] 的值都变为C 4,  求区间 [l, r]所有数的p次方的和 分析 ...

  8. SQL - 添加外键

    不解释: ---先创建外键的column ALTER TABLE tblLicenses ADD ProductID int not null; ---添加外键 ALTER TABLE tblLice ...

  9. Hu矩SVM训练及检测-----OpenCV

    关键词:Hu矩,SVM,OpenCV 在图像中进行目标物识别,涉及到特定区域内是否存在目标物,SVM可在样本量较少情况下对正负样本(图片中前景背景)做出良好区分,图片基本特征包括诸如HOG.LBP.H ...

  10. 关于Web Api的HelpPage文档注释问题

    之前使用Microsoft.AspNet.WebApi.HelpPage的时候,一直为返回对象的注释发愁,以为这是个BUG. 这个注释的解决办法其实要从其原理理解就明白了. 因为HelpPage是读取 ...