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 相关文章推荐
一个好用的分页函数
Nov 16 PHP
PHP 采集心得技巧
May 15 PHP
PHP 读取文件内容代码(txt,js等)
Dec 06 PHP
分享下PHP register_globals 值为on与off的理解
Sep 26 PHP
PHP中ob_start函数的使用说明
Nov 11 PHP
ThinkPHP实例化模型的四种方法概述
Aug 22 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
Sep 10 PHP
PHP实现采集中国天气网未来7天天气
Oct 15 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
Jan 15 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
Dec 21 PHP
PHP PDOStatement::bindValue讲解
Jan 30 PHP
phpmyadmin在宝塔面板里进不去的解决方案
Jul 06 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中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
Javascript 继承机制实例
2009/08/12 Javascript
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
JS获取整个页面文档的实现代码
2011/12/15 Javascript
javascript使用正则控制input输入框允许输入的值方法大全
2014/06/19 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
layui前段框架日期控件使用方法详解
2017/05/19 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
iphone刘海屏页面适配方法
2019/05/07 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
js实现抽奖的两种方法
2020/03/19 Javascript
easyUI 实现的后台分页与前台显示功能示例
2020/06/01 Javascript
html-webpack-plugin修改页面的title的方法
2020/06/18 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
python 自动提交和抓取网页
2009/07/13 Python
python二叉树的实现实例
2013/11/21 Python
跟老齐学Python之开始真正编程
2014/09/12 Python
python判断输入日期为第几天的实例
2018/11/13 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
详解PyTorch手写数字识别(MNIST数据集)
2019/08/16 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
世界最大域名注册商:GoDaddy
2016/07/24 全球购物
什么是serialVersionUID
2016/03/04 面试题
优秀学生干部推荐材料
2014/02/03 职场文书
争做文明公民倡议书
2014/08/29 职场文书
网站出售协议书范文
2014/10/10 职场文书
导游词之广州陈家祠
2019/10/21 职场文书