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 出现乱码和Sessions验证问题的解决方法!
Dec 06 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
May 16 PHP
php empty,isset,is_null判断比较(差异与异同)
Oct 19 PHP
php 大数据量及海量数据处理算法总结
May 07 PHP
单点登录 Ucenter示例分析
Oct 29 PHP
php中异常处理方法小结
Jan 09 PHP
使用图灵api创建微信聊天机器人
Jul 23 PHP
PHP 将dataurl转成图片image方法总结
Oct 14 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
May 11 PHP
PHP7新功能总结
Apr 14 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
Aug 03 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
Jan 07 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接收POST数据,解析json数据
2013/06/28 PHP
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
Javascript 的addEventListener()及attachEvent()区别分析
2009/05/21 Javascript
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
利用jQuery及AJAX技术定时更新GridView的某一列数据
2015/12/04 Javascript
Bootstrap树形控件使用方法详解
2016/01/27 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
ES6正则表达式扩展笔记
2017/07/25 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
详解JavaScript之ES5的继承
2020/07/08 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
[58:21]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第二场
2018/04/04 DOTA
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
用Python绘制漫步图实例讲解
2020/02/26 Python
【HTML5】Canvas绘制简单图片教程
2016/05/13 HTML / CSS
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
公务员培训心得体会
2013/12/28 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
导师工作推荐信范文
2014/05/17 职场文书
保卫钓鱼岛口号
2014/06/20 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
大学生联谊活动策划书(光棍节)
2014/10/10 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
企业党建工作总结2015
2015/05/26 职场文书
Python echarts实现数据可视化实例详解
2022/03/03 Python