位置: 编程技术 - 正文

php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击

编辑:rootadmin

推荐整理分享php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击

php防止SQL注入攻击一般有三种方法:

使用mysql_real_escape_string函数 使用addslashes函数 使用mysql bind_param()

本文章向大家详细介绍这三个方法在防止SQL注入攻击中的效果及区别。

mysql_real_escape_string防sql注入攻击

mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。

在有些时候需要将mysql_real_escape_string与mysql_set_charset一起使用,因为如果不指定编码,可能会存在字符编码绕过mysql_real_escape_string函数的漏洞,比如:

当输入name值为name=%bf%%or%sleep%.%%3d0%limit%%时,sql语句输出为:

这时候引发SQL注入攻击。

下面是mysql_real_escape_string函数防止SQL注入攻击的正确做法:

addslashes防sql注入攻击

国内很多PHP coder仍在依靠addslashes防止SQL注入(包括我在内),我还是建议大家加强中文防止SQL注入的检查。addslashes的问题在于可以用0xbf来代替单引号,而addslashes只是将0xbf修改为0xbf5c,成为一个有效的多字节字符,其中的0xbf5c仍会被看作是单引号,所以addslashes无法成功拦截。当然addslashes也不是毫无用处,它可用于单字节字符串的处理。

php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击

addslashes会自动给单引号,双引号增加,这样我们就可以安全的把数据存入数据库中而不黑客利用,参数'a..z'界定所有大小写字母均被转义,代码如下:

mysql bind_param()绑定参数防止SQL注入攻击

什么叫绑定参数,给大家举个例子:

你肯定不知道会输出什么..更无法知道绑定参数有什么好处!这样做的优势是什么.更不知道bindParam这个函数到底做了什么.

下面我简单的写一下这个函数:

注:由于得知道去除问号的次数..所以我用了一个global来解决.如果放到类中就非常容易了.弄个私有属性既可

通过上面的这个函数.我们知道了..绑定参数的防注入方式其实也是通过转义进行的..只不过是对于变量而言的..

我们来做一个实验:

可以看到.生成了非常正规的SQL语句.那么好.我们现在来试下刚才被注入的那种情况

可以看到.pwd内部的注入已经被转义.当成一个完整的字符串了..这样的话.就不可能被注入了.

总结:

上面三个方法都可以防止sql注入攻击,但第一种方法和第二种方法都存在字符编码的漏洞,所以本文章建议大家使用第三种方法。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

ThinkPHP 整合Bootstrap Ajax分页样式 ThinkPHPAjax分页代码publicfunctionindex(){$where=array();$name=I('name');if(!empty($name)){$where['name']=array('like','%'.(string)$name.'%');}$Role=M('Role');$count=$Role-where($where)-count();//

如何判断php mysqli扩展类是否开启 如何判断phpmysqli扩展类是否开启php判断mysqli扩展类是否开启,源码如下:php/*

php 反斜杠处理函数addslashes()和stripslashes()实例详解 php反斜杠处理函数addslashes():对输入字符串中的某些预定义字符前添加反斜杠,这样处理是为了数据库查询语句等的需要。这些预定义字符是:单引号('

标签: php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击

本文链接地址:https://www.jiuchutong.com/biancheng/297070.html 转载请保留说明!

上一篇:利用PHP生成CSV文件简单示例(生成php文件)

下一篇:ThinkPHP 整合Bootstrap Ajax分页样式(thinkphp项目怎么部署)

  • 企业办税权限怎么授权给个人
  • 定期定额征收和核定征收一样吗
  • 小规模纳税人是季报还是月报
  • 退休职工怎么填写单位吗
  • 电子发票错误怎么重开
  • 企业注销资产负债表年初数要调整吗?
  • 通用机打发票能作废吗
  • 转让固定资产发生的费用可以税前扣除吗
  • 小规模纳税人普通发票可以抵税吗
  • 收到费用报销发票怎么做
  • 食堂买的固定资产怎么帐务处理
  • 房地产开发成本费用明细表
  • 农业生产企业是指什么
  • 查税是按基本账户吗
  • 购进货物未取得增值税专用发票
  • 关于促进房地产市场健康发展的实施意见(试行)
  • 更正申报增值税会产生滞纳金吗
  • 小微企业附加税优惠政策2023
  • 税控盘服务费每年都可以抵吗
  • 用货物抵账该怎么交税
  • 一般纳税人交的增值税可以抵扣吗
  • 开具红字专用发票要求
  • 免税单位无租使用房产怎么缴纳房产税
  • 公司注销的时候注册资金都没交可以吗?
  • 分支机构怎么认定和纳税?
  • 哪些费用可以做研发费用
  • 鸿蒙系统最新版本
  • 用人单位逾期未缴纳社会保险费可能会使用的文书
  • 中专学历可以报成人本科吗
  • 计算机指令用来做什么
  • 发财树怎么养护与浇水
  • PHP:pcntl_signal_dispatch()的用法_PCNTL函数
  • php zmq
  • php yield 异步
  • 前后端交互用什么技术
  • “Ninja is required to load C++ extensions”解决方案
  • 微信小程序登录后端
  • 用人单位垫付生育津贴怎么算
  • 社保基数和实际工资怎么算
  • vue 父组件调用子组件效果
  • 手把手教你安装nvidia驱动
  • python 虚拟环境
  • 代理进口业务应纳的关税
  • 去年亏损今年盈利
  • 高新企业做账有什么不同
  • mysql日志文件在哪里
  • 抚恤金发放标准2019年
  • sql查询表中指定数据
  • 一般纳税人开普票要交税几点
  • 预付房租的账务处理
  • 收购发票加计扣除会计分录
  • 进项税转出金额怎么算
  • 个体户生产经营所得
  • 合并资产负债表与母公司资产负债表要看那一个好
  • 弥补以前年度亏损后缴纳所得税
  • 提取安全生产费用是什么意思
  • 残保金怎么做账务处理
  • 融资租赁收到的租金计入什么科目
  • 长期股权投资出售时其他权益变动
  • 废品回收利用公司
  • 年终奖通常怎么计算
  • 盗版win10系统
  • windows hellopin是什么意思
  • 系统盘如何重装
  • 电脑取消开机密码显示不能改
  • linux命令find用法
  • hda linux
  • xp事件管理器
  • rtmanager.exe - rtmanager是什么进程 有什么用
  • 如何解决windows激活问题
  • win10英文版系统怎么完全改为中文
  • 安卓注入工具
  • nodejs安装express-g报错
  • 考四级题型
  • perl -p -i
  • nodejs 文件操作
  • linux进程管理命令使用
  • Linux进程通信(IPC)方式简介
  • Android Studio:adb not responding
  • 综合所得申报表在哪里
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设