清除空格的方法是不安全的,部分原因是因为字符中的空格非常多,例如 "addslashes的问题在 于黑客 可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会 被看作是单引号,所以addslashes无法成功拦截。"

最好是按照具体的参数需求校验确定是 int 等不是,外加数据库的参数操作方法.其实这个是数据库的 sql 问题,应该从源头数据库本身来解决,只不过有些数据库滑提供相应的方法罢了.

SQL注入攻击是黑客攻击网站最常用的手段。如果你的站点没有使用严格的用户输入检验,那么常容易遭到SQL注入攻击。SQL注入攻击通常通过给站点数据库提交不良的数据或查询语句来实现,很可能使数据库中的纪录遭到暴露,更改或被删除。

为了防止SQL注入攻击,PHP自带一个功能可以对输入的字符串进行处理,可以在较底层对输入进行安全上的初步处理,也即Magic Quotes。(php.ini magic_quotes_gpc)。如果magic_quotes_gpc选项启用,那么输入的字符串中的单引号,双引号和其它一些字符前将会被自动加 上反斜杠。

但Magic Quotes并不是一个很通用的解决方案,没能屏蔽所有有潜在危险的字符,并且在许多服务器上Magic Quotes并没有被启用。所以,我们还需要使用其它多种方法来防止SQL注入。

许 多数据库本身就提供这种输入数据处理功能。例如PHP的MySQL操作函数中有addslashes()、 mysql_real_escape_string()、mysql_escape_string()等函数,可将特殊字符和可能引起数据库操作出错的字 符转义。那么这三个功能函数之间有什么却别呢?下面我们就来详细讲述下。

虽然国内很多PHP程序员仍在依靠addslashes防止SQL注入,还是建议大家加强中文防止SQL注入的检查。addslashes的问题在 于黑客 可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会 被看作是单引号,所以addslashes无法成功拦截。

当然addslashes也不是毫无用处,它是用于单字节字符串的处理,多字节字符还是用mysql_real_escape_string吧。

另外对于php手册中get_magic_quotes_gpc的举例: 
if (!get_magic_quotes_gpc()) { 
$lastname = addslashes($_POST[‘lastname']); 
} else { 
$lastname = $_POST[‘lastname']; 

最好对magic_quotes_gpc已经开放的情况下,还是对$_POST['lastname']进行检查一下。

再说下mysql_real_escape_string和mysql_escape_string这2个函数的区别: 
mysql_real_escape_string 必须在(PHP 4 >= 4.3.0, PHP 5)的情况下才能使用。否则只能用 mysql_escape_string ,两者的区别是:mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑。

总结一下:

* addslashes() 是强行加; 
* mysql_real_escape_string() 会判断字符集,但是对PHP版本有要求; 
* mysql_escape_string不考虑连接的当前字符集。

dz中的防止sql注入就是用addslashes这个函数,同时在dthmlspecialchars这个函数中有进行一些替换$string = preg_replace('/&((#(d{3,5}|x[a-fA-F0-9]{4}));)/', '&\1',这个替换解决了注入的问题,同时也解决了中文乱码的一些问题

转载于:https://www.cnblogs.com/jacklikedogs/p/3480463.html

【转】谈一谈PHP字串清除空格函数不安全相关推荐

  1. php怎样规定密码混合,PHP产生随机字串,可用来自动生成密码 默认长度6位 字母和数字混合...

    /** * 产生随机字串,可用来自动生成密码 默认长度6位 字母和数字混合 * @param string $len 长度 * @param string $type 字串类型 * 0 字母 1 数字 ...

  2. 有一群200w年薪的朋友是什么感觉?谈一谈入学中国科学院大学的几点感受吧

    我叫阿广,偶尔正经,偶尔逗比,97年生人,在求学期间当过鸡头鸡尾,当过凤尾没当过凤头.大家如果想深入了解我,可以查看本公众号的原创文章. 技术人光有技术走不长久,所以今天不更新技术文章了,也给大家谈一 ...

  3. 谈一谈周公所理解的面试

    因为公司最近招聘的力度很大,所以最近公司的面试很多,加之很多同事项目紧,所以让我参加了一些技术面试.不论是作为面试官还是应聘者,参加工作以来我参与的面试的次数我自己也记不清了,所以在此想从面试官和应聘 ...

  4. 我从阿里面试回来,想和Java程序猿谈一谈

    最近小编看了一篇关于面试的文章,题目是"我从阿里面试回来,想和Java程序员谈一谈",内容不是讲面试前刷题,而是更加聚焦在面试前如何准备,以及工作当中如何学习.感觉总结的很不错,今 ...

  5. 先查询再插入的存储过程怎么写_谈一谈 InnoDB(1) - 底层存储文件结构

    看技术文章是不是很累呢, 这次来个轻松点的~来谈一谈MySQL最主流的数据库引擎 InnoDB 吧~ 序 老王走进一号会议室, 随手打开了灯, 小张紧随其后 "王哥, 找我来干啥啊" ...

  6. Java程序员谈一谈-----java程序员成长之路

    转载:http://www.banzg.com/archives/679.html?ref=myread 阿里面试回来,想和Java程序员谈一谈 引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力 ...

  7. 阿里面试回来,想和 Java 程序员谈一谈

    转载自 阿里面试回来,想和 Java 程序员谈一谈! 第一个问题:阿里面试都问什么? 这个是让LZ最头疼的一个问题,也是群里的猿友们问的最多的一个问题.说实话,LZ只能隐约想起并发.JVM.分布式.T ...

  8. 谈一谈我对本科计算机专业的认识

    新的一年开始了,我大学的所有课程也刚刚结束不久,想一写篇文章谈一谈我对计算机专业的认识.博主学的专业是"计算机科学与技术",今年大四,三年半的校园生活使我对计算机专业的认知一次又一 ...

  9. 写在工作的第十年: 谈一谈专注和基础的重要性

    写在工作的第十年: 谈一谈专注和基础的重要性 老帮菜的自我吐槽 不知不觉, 作为一个打工人, 作为一个写程序的打工人, 职业生涯的第十个年头悄然而至. 从一个充满雄心壮志的有志青年, 到如今有家有室的 ...

  10. 谈一谈对 TailwindCSS 的看法

    谈一谈对 TailwindCSS 的看法 从 NPM.DEVTOOL 的标签中可以看出: 每个月 npm 下载量高达 300 万次,jsDelivr 下载量更是高达 900万次,Star 数也即将突破 ...

最新文章

  1. linux下查看监听端口对应的进程
  2. Linux下Minigui开发环境的搭建(PC+S3C2440
  3. 2、leetcode1001 最大连续1的个数
  4. git 添加未跟踪的文件
  5. outlook邮箱备份方法:
  6. 模型驱动架构探索之游戏引擎设计 (二)粒度统一
  7. 轻量级锁_一句话撸完重量级锁、自旋锁、轻量级锁、偏向锁、悲观、乐观锁等各种锁 不看后悔系列...
  8. 用c#开发微信 (4) 基于Senparc.Weixin框架的接收事件推送处理 (源码下载)
  9. 大学计算机大一上学期考试试题及答案,武汉理工大学大一上学期计算机基础试题题库及答案...
  10. 【干货】针对DNN的神经网络中上下文相关处理的连续学习概述
  11. 前端常识:常见显示器屏幕分辨率
  12. javascript 逗号隔开的字符串 转数组
  13. http://bbs.csdn.net/topics/392028373
  14. POI单元格合并(合并后边框空白修复)、自动列宽、水平居中、垂直居中、设置背景颜色、设置字体等常见问题
  15. Java进阶学习资料,java小程序开发面试题
  16. 【Http】HTTP方法的安全性和幂等性
  17. PowerJob 的自实现高可用方案,妙妙妙!
  18. ueditor 图片上传 java_Spring+Vue整合UEditor富文本实现图片附件上传的方法
  19. MBA-day33 绝对值的几何意义
  20. 礼物说,一款小程序给你生活最好的选择

热门文章

  1. 切换网段后,处理用友T6变成演示版故障
  2. 菜式介绍:风味黄泥烤鸡
  3. 对大家的工作和职业方向有益才是我的最终目的
  4. Java中常见流的分类及简单讲解
  5. D.E.Shaw——高频统计套利交易获利41亿美元
  6. maven工程的多环境配置方案(profile)
  7. Android Studio真机测试失败-----''No target device found
  8. Unity3D播放背景音乐
  9. ARPG游戏打击感相关的技术简单总结
  10. python基础之小数据池,is和==区别 编码问题