sql注入式攻击

来源

表单输入或者url传参

常见攻击方式

  • 使用';--
SELECT * FROM  xq_adv where title='zhangsan';DROP TABLE xq_article--'

引号和分号是为了隔离前面的sql语句,后面的--代表注释。因为最后一个'可能会影响删表,所以使用注释不影响执行删表。注意:最后一个引号来自代码封装:原语句可能如下的写法:

$sql = "SELECT * FROM  xq_adv where title='".$_GET['title']."'";
#这句php代码因为title本身是被引号的
  • 使用 ';' +or + --
SELECT * FROM  xq_adv where title='zhangsan' or DROP TABLE xq_article--'

注意:在PHP中的 mysql_query() 是不允许执行多个SQL语句的,但是还是可以通过or and 等语句来执行。

预防sql注入

  • 开启php魔术模式,magic_quotes_gpc=on;
  • 打开php.ini中的安全模式 safe_mode = on
  • 关闭危险函数,比如system,chmod等函数;
  • 错误信息控制 ,让非开发人员看到有关数据库错误信息是很危险的,这会泄露数据库,表,字段等名称信息以及其他不安全因素。
  • 使用php自带函数将一些特殊字符转义后再执行sql语句。
    addslashes() 是强行加\;
    mysql_real_escape_string() 会判断字符集,但是对PHP版本有要求;
    mysql_escape_string不考虑连接的当前字符集。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • SQL注入式攻击:攻击者吧SQL命令插入到Web表单的域或页面请求的查询字符串中,欺骗服务器执行恶意的SQL命令。...
    helinyu阅读 673评论 0 1
  • SQL注入式攻击是指利用设计上的漏洞攻击系统。如果动态生成SQL语句时没有对用户输入的数据 进行过滤,便会使SQL...
    小明yz阅读 349评论 0 2
  • GET和POST的区别及get和post关于请求的编解码的问题GET请求中对MySQL的注释:-- ,--+POS...
    Smi1e_阅读 2,037评论 0 2
  • 先看题目, 依然还是POST, 但是却是更新update询问基于错误的字符串类型的问题.....= = 迷 进去测...
    seeiy阅读 879评论 0 0
  • web应用程序会对用户的输入进行验证,过滤其中的一些关键字,这种过滤我们可以试着用下面的方法避开。 1、 不使用被...
    查无此人asdasd阅读 7,348评论 0 5