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 中执行排序与 MySQL 中排序
Apr 21 PHP
PHP 动态随机生成验证码类代码
Apr 09 PHP
PHP session有效期session.gc_maxlifetime
Apr 20 PHP
PHP gbk环境下json_dencode传送来的汉字
Nov 13 PHP
解析php中反射的应用
Jun 18 PHP
测试php连接mysql是否成功的代码分享
Jan 24 PHP
PHP SOCKET编程详解
May 22 PHP
PHP中如何使用session实现保存用户登录信息
Oct 20 PHP
php实现转换html格式为文本格式的方法
May 16 PHP
PHP+原生态ajax实现的省市联动功能详解
Aug 15 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
Nov 13 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 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
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
PHP调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
探讨Hessian在PHP中的使用分析
2013/06/13 PHP
用dtree实现树形菜单 dtree使用说明
2011/10/17 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
vuex中使用对象展开运算符的示例
2017/09/25 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
js继承的这6种方式!(上)
2019/04/23 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
vue-amap根据地址回显地图并mark的操作
2020/11/03 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
[02:10]三分钟回顾完美世界城市挑战赛
2019/01/24 DOTA
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
python正则表达式修复网站文章字体不统一的解决方法
2013/02/21 Python
python中的多重继承实例讲解
2014/09/28 Python
讲解Python中运算符使用时的优先级
2015/05/14 Python
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
python dict 相同key 合并value的实例
2019/01/21 Python
python3.5安装python3-tk详解
2019/04/26 Python
python算的上脚本语言吗
2020/06/22 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
浅谈html5 响应式布局
2014/12/24 HTML / CSS
澳大利亚领先的孕妇服装品牌:Mamaway
2018/08/14 全球购物
《傅雷家书》教学反思
2014/04/20 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
高中生期中考试失利检讨书
2014/10/23 职场文书
外国人来华邀请函
2015/01/31 职场文书
2015年教师教学工作总结
2015/04/28 职场文书
经费申请报告
2015/05/15 职场文书
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python