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:以日志的方式记录错误信息:log_errors=on和error_log=filename,定期排查,Web日志最好也查。
7:不要用具有FILE权限的账号(比如root)连接MySQL,这样就屏蔽了load_file等危险函数。
相关推荐
-
防止MySQL注入或HTML表单滥用的PHP程序
MySQL注入的意图是接管网站数据库并窃取信息.常见的开源数据库,如MySQL,已经被许多网站开发人员用来储存重要信息,如密码,个人信息和管理信息. MySQL之所以流行,是因为它与最流行的服务器端脚本语言PHP一起使用.而且,PHP是主导互联网的Linux- Apache服务器的主要语言.因此,这意味着黑客可以很容易地利用PHP就像Windows的间谍软件一样. 黑客向一个无担保的网页表单输入大量恶意代码(通过下拉菜单,搜索框,联系表单,查询表单和复选框). 恶意代码将被送到MySQL数据库,
-
php+mysql注入页面实现
首先来借鉴一下注入点,以往的注入点是这样的http://www.xxx.com/show.php?id=1,典型的数字型注入. $id=$_GET['id'];//获取GET方式传过来的值并赋值给变量 既然是注入那么肯定要操作数据库. $con = mysql_connect('127.0.0.1','root','root');//使用connect这个函数来连接数据库,然后赋值给变量,connect这个函数有三个 参数分别是数据库地址,账号,密码. mysql_select_db('数据库名
-
mysql5 注入漏洞
复制代码 代码如下: select concat_ws(0x2f,information_schema.tables.table_schema,`information_schema`.`COLUMNS`.table_name,`information_schema`.`COLUMNS`.column_name) from `information_schema`.`COLUMNS` left join information_schema.tables on `information_sche
-
PHP+MySQL 手工注入语句大全 推荐
暴字段长度 Order by num/* 匹配字段 and 1=1 union select 1,2,3,4,5--.n/* 暴字段位置 and 1=2 union select 1,2,3,4,5-..n/* 利用内置函数暴数据库信息 version() database() user() 不用猜解可用字段暴数据库信息(有些网站不适用): and 1=2 union all select version() /* and 1=2 union all select database() /* a
-
MySQL 及 SQL 注入与防范方法
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输入的数据进行过滤处理. 1.以下实例中,输入的用户名必须为字母.数字及下划线的组合,且用户名长度为 8 到 20 个字符之间: if (preg_match("/^\w{8,20}$/", $_GET['username'], $matches)) { $result =
-
Mysql数据库使用concat函数执行SQL注入查询
SQL注入语句有时候会使用替换查询技术,就是让原有的查询语句查不到结果出错,而让自己构造的查询语句执行,并把执行结果代替原有查询语句查询结果显示出来. 例如:原本查询语句是 复制代码 代码如下: select username,email,content from test_table where user_id=uid; 其中uid,是用户输入的.正常显示结果会出现用户名,用户邮箱,用户留言内容.但是如果uid过滤不严,我们可以构造如下SQL语句来获得任意数据表信息. 复制代码 代码如下: u
-
Php中用PDO查询Mysql来避免SQL注入风险的方法
当我们使用传统的 mysql_connect .mysql_query方法来连接查询数据库时,如果过滤不严,就有SQL注入风险,导致网站被攻击,失去控制.虽然可以用mysql_real_escape_string()函数过滤用户提交的值,但是也有缺陷.而使用PHP的PDO扩展的 prepare 方法,就可以避免sql injection 风险. PDO(PHP Data Object) 是PHP5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连
-
SQL Injection with MySQL 注入分析
声明 本文仅用于教学目的,如果因为本文造成的攻击后果本人概不负责,本文所有代码均为本人所写,所有数据均经过测试.绝对真实.如果有什么遗漏或错误,欢迎来安全天使论坛和我交流. 前言 2003年开始,喜欢脚本攻击的人越来越多,而且研究ASP下注入的朋友也逐渐多了起来,我看过最早的关于SQL注入的文章是一篇99年国外的高手写的,而现在国外的已经炉火纯青了,国内才开始注意这个技术,由此看来,国内的这方面的技术相对于国外还是有一段很大差距,话说回来,大家对SQL注入攻击也相当熟悉了,国内各大站点都有些堪称
-
MySQL注入绕开过滤的技巧总结
首先来看GIF操作: 情况一:空格被过滤 使用括号()代替空格,任何可以计算出结果的语句,都可以用括号包围起来: select * from(users)where id=1; 使用注释/**/绕过空格: select * from/**/users/**/where id=1; 情况二:限制from与某种字符组合 在from后加个点.即使用from.来代替from: select * from. users where id=1; 再直接看GIF: 说白了,就是将'字段名 '替换成hex: 这
-
MySQL注入中导出字段内容的研究通过注入导出WebShell
最大的局限就在这里--插入数据,所以我们只能从程序现有的功能入手,其实很多程序都可以提交评论.留言.帖子等,就看程序是怎么把变量插入数据库的.其实道路就在我们身边,靠我们自己去开辟. 不用多说,先看在本地测试的一个简单例子,建立一个表,结构如下: CREATE TABLE `article` ( `articleid` INT NOT NULL AUTO_INCREMENT , `title` VARCHAR( 200 ) NOT NULL , `content` TEXT NOT NULL ,
随机推荐
- jQuery实现的页面遮罩层功能示例【测试可用】
- JS调用打印方法设置页眉页脚的实例
- 解决XP无法停止‘通用卷’的方法合集
- C语言实现类似wget的进度条效果
- XCode编译速度慢的处理方法
- 基于php的微信公众平台开发入门实例
- C++学习小结之二进制转换
- 属于自己的Android对话框(Dialog)自定义集合
- ES6中Math对象新增的方法实例详解
- android图像绘制(六)获取本地图片或拍照图片等图片资源
- 深入理解Ruby on Rails中的缓存机制
- mysql 教程 存储过程
- SQL Server利用bcp命令把SQL语句结果生成文本文件
- jQuery结合HTML5制作的爱心树表白动画
- JS旋转的彩色文字轮转特效
- javascript实现页面刷新时自动清空表单并选中的方法
- LoadUserProfile 调用因下列错误而宣告失败: 拒绝访问的常见解决方法
- Nginx网站根目录更改及导致403 forbidden的问题解决
- 使用squid搭建http代理的方法
- Android开发之TabActivity用法实例详解