PHP+mysql防止SQL注入的方法小结


Posted in PHP onApril 27, 2019

本文实例讲述了PHP+mysql防止SQL注入的方法。分享给大家供大家参考,具体如下:

SQL注入

例:脚本逻辑

$sql = "SELECT * FROM user WHERE userid = $_GET[userid] ";

案例1:

SELECT * FROM t WHERE a LIKE '%xxx%' OR (IF(NOW=SYSDATE(), SLEEP(5), 1)) OR b LIKE '1=1 ';

案例2:

SELECT * FROM t WHERE a > 0 AND b IN(497 AND (SELECT * FROM (SELECT(SLEEP(20)))a) );

案例3:

SELECT * FROM t WHERE a=1 and b in (1234 ,(SELECT (CASE WHEN (5=5) THEN SLEEP(5) ELSE 5*(SELECT 5 FROM INFORMATION_SCHEMA.CHARACTER_SETS) END)) );

监控以下方法

SLEEP() — 一般的SQL盲注都会伴随SLEEP()函数出现,而且一般至少SLEEP 5秒以上
MID()
CHAR()
ORD()
SYSDATE()
SUBSTRING()
DATABASES()
SCHEMA()
USER()
VERSION()
CURRENT_USER()
LOAD_FILE()
OUTFILE/DUMPFILE
INFORMATION_SCHEMA
TABLE_NAME
fwrite()/fopen()/file_get_contents() — 这几个是PHP文件操作函数

应对方法:

1.mysql_escape_string() 转义特殊字符((PHP 4 >= 4.3.0, PHP 5))(mysql_real_escape_string必须先链接上数据库,否则会报错)

下列字符受影响:

\x00 //对应于ascii字符的NULL
\n  //换行符且回到下一行的最前端
\r //换行符
\ //转义符
'
"
\x1a  //16进制数

如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。

2.addslashes(): 函数返回在预定义字符之前添加反斜杠的字符串 (stripslashes()实现字符串还原)

预定义的字符有:

    单引号(')
    双引号(")
    反斜杠(\)
    NULL

3.prepared  statements(预处理机制)

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
 echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
/* Non-prepared statement */
if (!$mysqli->query("DROP TABLE IF EXISTS test") || !$mysqli->query("CREATE TABLE test(id INT)")) {
 echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
/* Prepared statement, stage 1: prepare */
if (!($stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (?)"))) {
 echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
/* Prepared statement, stage 2: bind and execute */
$id = 1;
if (!$stmt->bind_param("i", $id)) {
 echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
}
if (!$stmt->execute()) {
 echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP调用三种数据库的方法(3)
Oct 09 PHP
php在线打包程序源码
Jul 27 PHP
php将12小时制转换成24小时制的方法
Mar 31 PHP
php封装好的人民币数值转中文大写类
Dec 20 PHP
PHP socket 模拟POST 请求实例代码
Jul 18 PHP
php 如何禁用eval() 函数实例详解
Dec 01 PHP
php实现的双色球算法示例
Jun 20 PHP
php如何修改SESSION的生存存储时间的实例代码
Jul 05 PHP
Laravel 批量更新多条数据的示例
Nov 27 PHP
PHP缓存工具XCache安装与使用方法详解
Apr 09 PHP
PHP赋值的内部是如何跑的详解
Jan 13 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
Aug 26 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
Apr 27 #PHP
PHP操作路由器实现方法示例
Apr 27 #PHP
PHP切割汉字的常用方法实例总结
Apr 27 #PHP
YII框架常用技巧总结
Apr 27 #PHP
YII框架行为behaviors用法示例
Apr 26 #PHP
YII框架模块化处理操作示例
Apr 26 #PHP
Yii框架ACF(accessController)简单权限控制操作示例
Apr 26 #PHP
You might like
如何在PHP中使用Oracle数据库(1)
2006/10/09 PHP
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
jquery ajax 局部无刷新更新数据的实现案例
2014/02/08 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
jQuery自定义添加&quot;$&quot;与解决&quot;$&quot;冲突的方法
2015/01/19 Javascript
JS实现文字向下滚动完整实例
2015/02/06 Javascript
JavaScript实现带标题的图片轮播特效
2015/05/20 Javascript
每天一篇javascript学习小结(Boolean对象)
2015/11/12 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
2015/12/02 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
2017/07/08 jQuery
微信小程序下拉刷新界面的实现
2017/09/28 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
微信小程序支付PHP代码
2018/08/23 Javascript
详解element-ui中el-select的默认选择项问题
2019/08/02 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
jQuery实现飞机大战小游戏
2020/07/05 jQuery
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
python复制文件的方法实例详解
2015/05/22 Python
Python迭代器和生成器定义与用法示例
2018/02/10 Python
Python如何实现Paramiko的二次封装
2021/01/30 Python
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
大韩航空官方网站:Korean Air
2017/10/25 全球购物
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
党校学习思想汇报
2014/01/06 职场文书
大班开学家长寄语
2014/04/04 职场文书
初中团委工作总结
2015/08/13 职场文书
导游词之上饶龟峰
2019/10/25 职场文书