PHP与SQL注入攻击[一]
Haohappy
http://blog.csdn.net/Haohappy2004
SQL注入攻击是黑客攻击网站最常用的手段。如果你的站点没有使用严格的用户输入检验,那么非常容易遭到SQL注入攻击。SQL注入攻击通常通过给站点数据库提交不良的数据或查询语句来实现,很可能使数据库中的纪录遭到暴露,更改或被删除。下面来谈谈SQL注入攻击是如何实现的,又如何防范。
看这个例子:
// supposed input
$name = “ilia'; DELETE FROM users;”;
mysql_query(“SELECT * FROM users WHERE name='{$name}'”);
很明显最后数据库执行的命令是:
SELECT * FROM users WHERE name=ilia; DELETE FROM users
这就给数据库带来了灾难性的后果--所有记录都被删除了。
不过如果你使用的数据库是MySQL,那么还好,mysql_query()函数不允许直接执行这样的操作(不能单行进行多个语句操作),所以你可以放心。如果你使用的数据库是SQLite或者PostgreSQL,支持这样的语句,那么就将面临灭顶之灾了。
相关推荐
-
PHP与SQL注入攻击防范小技巧
下面来谈谈SQL注入攻击是如何实现的,又如何防范. 看这个例子: 复制代码 代码如下: // supposed input $name = "ilia'; DELETE FROM users;"; mysql_query("SELECT * FROM users WHERE name='{$name}'"); 很明显最后数据库执行的命令是: SELECT * FROM users WHERE name=ilia; DELETE FROM users 这就给数据库带来
-
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击 php防止SQL注入攻击一般有三种方法: 使用mysql_real_escape_string函数 使用addslashes函数 使用mysql bind_param() 本文章向大家详细介绍这三个方法在防止SQL注入攻击中的效果及区别. mysql_real_escape_string防sql注入攻击 mysql_real_escape_string() 函数转义 SQL 语句中
-
PHP防止注入攻击实例分析
本文以实例形式详细分析了PHP防止注入攻击的方法.分享给大家供大家参考.具体分析如下: PHP addslashes() 函数--单撇号加斜线转义 PHP String 函数 定义和用法 addslashes() 函数在指定的预定义字符前添加反斜杠. 这些预定义字符是: 单引号 (') 双引号 (") 反斜杠 (\) NULL 语法: addslashes(string) 参数 描述 string 必需.规定要检查的字符串. 提示和注释 提示:该函数可用于为存储在数据库中的字符串以及数
-
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
mysql_real_escape_string() 所以得SQL语句如果有类似这样的写法:"select * from cdr where src =".$userId; 都要改成 $userId=mysql_real_escape_string($userId) 所有有打印的语句如echo,print等 在打印前都要使用htmlentities() 进行过滤,这样可以防止Xss,注意中文要写出htmlentities($name,ENT_NOQUOTES,GB2312) .
-
PHP MYSQL注入攻击需要预防7个要点
1:数字型参数使用类似intval,floatval这样的方法强制过滤. 2:字符串型参数使用类似mysql_real_escape_string这样的方法强制过滤,而不是简单的addslashes. 3:最好抛弃mysql_query这样的拼接SQL查询方式,尽可能使用PDO的prepare绑定方式. 4:使用rewrite技术隐藏真实脚本及参数的信息,通过rewrite正则也能过滤可疑的参数. 5:关闭错误提示,不给攻击者提供敏感信息:display_errors=off. 6:以日志的方式
-
PHP与SQL注入攻击[二]
PHP与SQL注入攻击[二] Magic Quotes 上文提到,SQL注入主要是提交不安全的数据给数据库来达到攻击目的.为了防止SQL注 入攻击,PHP自带一个功能可以对输入的字符串进行处理,可以在较底层对输入进行安全 上的初步处理,也即Magic Quotes.(php.ini magic_quotes_gpc).如果magic_quotes_gpc 选项启用,那么输入的字符串中的单引号,双引号和其它一些字符前将会被自动加上反斜杠\. 但Magic Quotes并不是一个很通用的解决方案,没
-
PHP+SQL 注入攻击的技术实现以及预防办法
1. php 配置文件 php.ini 中的 magic_quotes_gpc 选项没有打开,被置为 off 2. 开发者没有对数据类型进行检查和转义 不过事实上,第二点最为重要.我认为, 对用户输入的数据类型进行检查,向 MYSQL 提交正确的数据类型,这应该是一个 web 程序员最最基本的素质.但现实中,常常有许多小白式的 Web 开发者忘了这点, 从而导致后门大开. 为什么说第二点最为重要?因为如果没有第二点的保证,magic_quotes_gpc 选项,不论为 on,还是为 off,都有
-
细谈php中SQL注入攻击与XSS攻击
例如: SQL注入攻击 XSS攻击 复制代码 代码如下: 任意执行代码 文件包含以及CSRF. } 关于SQL攻击有很多文章还有各种防注入脚本,但是都不能解决SQL注入的根本问题 见代码: 复制代码 代码如下: <?php mysql_connect("localhost","root","123456")or die("数据库连接失败!"); mysql_select_db("test1"); $u
-
PHP与SQL注入攻击[三]
这几天太忙,继续连载哈哈,争取半个月结束. 上文说到数据库自带的不安全输入过滤功能,但这样的功能不是所有数据库都有的.目前大概只有MySQL,SQLite,PostgreSQL,Sybase带有这样的功能,而包括Oracle和SQL Server在内的很多数据库都没有. 鉴于这样的情况,一般开发者采用一种通用的方法来避免不安全的数据写入数据库--base64编码.这样可以避免所有可能引起问题的特殊字符造成的危险.但Base64编码后的数据容量大概会增加33%,比较占用空间.在PostgreSQL
-
防御SQL注入攻击时需要注意的一个问题
目前很多IIS防火墙其实质就是一个ISAPI Filter,针对SQL注入攻击的防御实质就是关键字过滤,这一点在我以前的随笔中提到的在开发的Web Server Guard中也是这样操作的.但目前大部分的IIS防火墙都存在一个漏洞:如果关键字包含未转义百分比符号 (%) ,那么将会绕过这些IIS防火墙的请求过滤和拦截,包含IIS 7.0的Request Filter. window.google_render_ad(); 因为这类防火墙都是查找位于URL/Form/Cookie中的关键字,比如E
-
技巧和诀窍防范SQL注入攻击
[原文地址]Tip/Trick: Guard Against SQL Injection Attacks [原文发表日期] Saturday, September 30, 2006 9:11 AM SQL注入攻击是非常令人讨厌的安全漏洞,是所有的web开发人员,不管是什么平台,技术,还是数据层,需要确信他们理解和防止的东西.不幸的是,开发人员往往不集中花点时间在这上面,以至他们的应用,更糟糕的是,他们的客户极其容易受到攻击. Michael Sutton 最近发表了一篇非常发人深省的帖子,讲述在
-
asp.net 预防SQL注入攻击之我见
1. SQL注入攻击的本质:让客户端传递过去的字符串变成SQL语句,而且能够被执行. 2. 每个程序员都必须肩负起防止SQL注入攻击的责任. 说起防止SQL注入攻击,感觉很郁闷,这么多年了大家一直在讨论,也一直在争论,可是到了现在似乎还是没有定论.当不知道注入原理的时候会觉得很神奇,怎么就被注入了呢?会觉得很难预防.但是当知道了注入原理之后预防不就是很简单的事情了吗? 第一次听说SQL注入攻击的时候还是在2004年(好像得知的比较晚),那是还是在写asp呢.在一次写代码的时候,有同事问我,你的这
-
PHP与SQL注入攻击[一]
Haohappy http://blog.csdn.net/Haohappy2004 SQL注入攻击是黑客攻击网站最常用的手段.如果你的站点没有使用严格的用户输入检验,那么非常容易遭到SQL注入攻击.SQL注入攻击通常通过给站点数据库提交不良的数据或查询语句来实现,很可能使数据库中的纪录遭到暴露,更改或被删除.下面来谈谈SQL注入攻击是如何实现的,又如何防范. 看这个例子: // supposed input $name = "ilia'; DELETE FROM users;"; m
-
JSP 防范SQL注入攻击分析
SQL注入攻击的总体思路: 发现SQL注入位置: 判断服务器类型和后台数据库类型: 确定可执行情况 对于有些攻击者而言,一般会采取sql注入法.下面我也谈一下自己关于sql注入法的感悟. 注入法: 从理论上说,认证网页中会有型如: select * from admin where username='XXX' and password='YYY' 的语句,若在正式运行此句之前,如果没有进行必要的字符过滤,则很容易实施SQL注入. 如在用户名文本框内输入:abc' or 1=1-- 在密码框内输
随机推荐
- jQuery的实现原理的模拟代码 -1 核心部分
- javascript 动态添加表格行
- IIS配置文件隐患
- 用PHP解决的一个栈的面试题
- android开发教程之文本框加滚动条scrollview
- PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
- asp中文件与文件夹常用处理函数(文件后缀、创建文件等)
- struts2与cookie 实现自动登录和验证码验证实现代码
- C语言中调用Swift函数实例详解
- jQuery Ajax前后端使用JSON进行交互示例
- ASP批量生成静态页面的写法(批量生成技巧iframe)
- JS实现获取剪贴板内容的方法
- “internet explore 无法打开internet站点 已终止操作”的解决方法
- Java排序算法总结之堆排序
- 福利彩票幸运号码自动生成器
- C++编程中__if_exists与__if_not_exists语句的用法
- Android实现图片浏览器示例
- NodeJs form-data格式传输文件的方法
- PyQt5每天必学之事件与信号
- Python高级特性切片(Slice)操作详解