范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

学习一个PHP中用于检测危险函数的扩展Taint

  在日常的开发中,安全性一直是我们要研究的重点内容之一。而在安全性中,最主要的一点就是我们的输入数据。所有的攻击和越权,都是从一个不经意间遗留的请求漏洞发生的。当然,现在很多框架已经为我们解决了大部分的安全性问题,但百密一疏,总会有意想不到的地方忘了加过滤或者遗漏了某些验证。今天我们要学习的这个扩展就是为我们解决这种问题而诞生的。 什么是 Taint
  上篇文章中就得到过,我们还要介绍一个鸟哥的扩展工具,Taint 这个扩展就是鸟哥大神的作品之一。不过这个扩展是不推荐安装在生产环境的,它主要的战场是在我们的测试环境中使用。它的主要功能就是如果我们使用了未经处理的 $_GET 、 $_POST 、 $_COOKIE 之类的变量,就会报出警告信息。注意,只是警告,而不是错误或者异常。一般在线上环境我们都会习惯性地关掉警告信息的报错,所以这个扩展在线上的功能有限。
  扩展的安装非常简单,下载对应的扩展然后进行普通的扩展安装即可,不需要额外的其它操作系统中组件的支持。对于这个扩展的详细信息,可以参考文末第二条链接中鸟哥文章的说明。 怎么用?
  php.ini 中打开扩展,然后设置 taint.enable = 1 。就正式启用这个扩展了。然后我们通过代码来测试。 $a = $_GET["a"]; $file_name = "/tmp" .  $a; $output    = "Welcome, {$a} !!!"; $var       = "output"; $sql       = "Select *  from " . $a;  echo $a, "
  "; // Warning: main() [echo]: Attempt to echo a string that might be tainted in /data/www/blog/taint/1.php on line 10  echo $output, "
  "; // Warning: main() [echo]: Attempt to echo a string that might be tainted in /data/www/blog/taint/1.php on line 12  print $var; echo "
  "; // Warning: main() [print]: Attempt to print a string that might be tainted in /data/www/blog/taint/1.php on line 14  include($file_name);echo "
  "; // Warning: main() [include]: File path contains data that might be tainted in /data/www/blog/taint/1.php on line 16  mysqli_query(null, $sql);echo "
  "; // Warning: main() [mysqli_query]: SQL statement contains data that might be tainted in /data/www/blog/taint/1.php on line 18
  我们使用 php -S 来调试这个测试文件,当访问这个测试文件并且带上 a 参数之后,就可以看到下面的这些操作都会报出警告信息。未经过滤的这个 $a ,不管是拼接到字符串中,还是作为可变变量,只要是通过 echo 、 print 、 include 或者是 mysqli_query() 这些函数调用后,都会马上出现报警,提示你使用的这个数据字符串是需要进行过滤的。taint 的意思是 污点 。might be tainted 也就是有污点内容的意思。
  大部分输出或者操作数据库之类的函数都会报出这些警告,这些内容的具体信息可以在官方文档中查询到。
  我们还可以通过一个判断函数来验证一个变量中是否包含这类未处理的数据。 var_dump(is_tainted($var)); // bool(false)  echo "
  "; var_dump(is_tainted($output)); // bool(true)  echo "
  "; 怎样不报警?
  怎样不让它报警?那当然就是对数据进行处理啦。 $output    = "Welcome, ".htmlentities($a)." !!!"; echo $output, "
  ";  $sql       = "Select *  from " . mysqli_escape_string(null, $a); mysqli_query(null, $sql);echo "
  ";
  在输出的时候进行 html 编码一下,对应的就是 XSS 攻击的防范。在数据库操作的时候 escape 一下,对应的就是处理掉 SQL 注入的攻击。使用了这些处理函数对数据进行安全性处理之后就不会报警告信息了。
  由此可以看出,这个扩展确实是我们在日常开发调试中,特别是测试环境中的好帮手。就像前面所说的,总会有遗漏和遗忘的地方,通过这个扩展让程序来自动发现这些内容,对于我们开发的安全来说就能够有非常大的提高。 检测及转换函数
  最后在 Taint 扩展中,还提供了两个函数用于强制进行警告和解除警告的作用,当然,也是为了我们在测试环境中的调试方便。 $newOutput = "Welcome !!!"; echo $newOutput, "
  "; var_dump(taint($newOutput)); // bool(true)  echo $newOutput, "
  "; // // Warning: main() [echo]: Attempt to echo a string that might be tainted in /data/www/blog/taint/1.php on line 39  $newOutput = "Welcome {$a} !!!";  echo $newOutput, "
  "; // Warning: main() [echo]: Attempt to echo a string that might be tainted in /data/www/blog/taint/1.php on line 42 var_dump(untaint($newOutput)); // bool(true)  echo $newOutput, "
  ";
  taint() 函数可以让一个正常的语句报出警告。而 untaint() 则可以让一个本身应该报警的数据不报警。 总结
  同样还是非常小众的扩展,但是学习了之后发现还真的是挺有用的,而且特别适合在我们的测试环境中向大家提供一个全面检测安全质量的报警系统。就像文中一直强调的那样,对于中大型的项目开发来说,遗漏是不可避免的,即使有完善的 code review 机制,但也总会有所有人都遗漏的漏洞存在。通过程序的方式来检验自然是最好不过的,大家可以多多尝试一下。
  测试代码:
  https://github.com/zhangyue0503/dev-blog/blob/master/php/2021/02/source/1.学习一个PHP中用于检测危险函数的扩展Taint.php
  参考文档:
  https://www.php.net/manual/zh/book.taint.php
  https://www.laruence.com/2012/02/14/2544.html

普华永道人工智能改变就业方式,从业者需升级9月4日,普华永道在2021年服贸会上发布新科技对人才结构和能力的颠覆洞察报告。王恩博摄中新网北京9月4日电(记者王恩博)普华永道4日在2021年服贸会上发布的一份报告指出,人工智因为芯片短缺,特斯拉Roadster和Cybertruck都推迟交付特斯拉Roadster特斯拉于2017年底宣布将生产一款四人座电动跑车Roadster,当时表示该车将比任何街头合法量产车的速度都要快,0到100公里加速只需1。9秒,0到160公智能家居是通过什么控制的?有多种控制方法。先列几例声控配备拾音器,经过声电转换,实现电子开关。一般是有人经过,声音触发,延时一定时间后,自动关闭。但普通并非真正具备声音辨识功能。温控有用红外线温度传感器,也vivoX70系列即将发布,2K分辨率E5材料,vivo自研影像芯片,买吗官方已经开始预告9月9日,vivoX70系列手机即将登场,这个手机这次料非常的足,2K分辨率的屏幕,而且用上了最新的E5材料(vivo旗下的品牌iQOO8pro在8月首发的),屏幕三孩新政的第一把火!留给教育巨头们的时间不多了冰川思想库特约研究员张明扬最近这一个月,是中国校外培训机构从风口坠落的至暗时刻。就在2020年,在线教育还曾御风飞行,甚至有疫情年最受益行业之誉。01hr特意选在六一儿童节这一天,iPhone13电池信息曝光,顶配版容量大增有关于iPhone13系列的爆料此前分享过不少,当然了,主要还是外观方面的消息,距离消息源比较近的知名外媒甚至已经把各种渲染图制作出来,具体可以看iPhone13Pro外观渲染图曝比特币和黄金的关系虽然比特币被许多投资机构接纳,但很多传统老派投资者仍然很难理解为什么数字资产具有价值。由于比特币价格增长速度快,大量的散户参与其中,许多人把加密货币拥簇现象视为典型的投机狂热或泡沫内蒙古移动率先完成内蒙古革命历史博物馆场馆45G网络建设与优化工作近日,内蒙古移动率先完成内蒙古革命历史博物馆场馆45G网络建设与优化工作。馆内5G平均下载速率861Mbps上传速率104Mbps,4G平均下行速率64Mbps上行速率50Mbps中国遥遥领先于美国!新能源汽车发展迅速,专家给出高度评价南方6月1日讯据Cleantechnica网站消息,汽车行业分析师虽然对全球交通系统电气化的未来发展方向存在分歧,但有一点他们都同意中国已遥遥领先于美国。消息称,写过几本关于中国历华为可不可以设计芯片,然后把技术卖给中国的手机公司?估计没有哪家公司有勇气买,归根到底美国制裁的不是华为,是我们不能掌握超过他们的先进科学技术,以华为的技术实力还能扛一扛,别的公司一但被制裁,那就呵呵了。想想中兴,可惜他好了伤疤忘了南山必胜客告赢了国家知识产权局,最强法务,名不虚传点击右上角关注财税黄金眼头条号,收获更多财税秘籍。本文共599个字,阅读全文约需要2分钟。腾讯告赢了国家知识产权局,你敢信?腾讯法务作为企鹅帝国的一员猛将,关于他的传奇故事实在太多
祝融号火星车完成既定探测任务我国首次火星探测任务于2021年5月15日成功实现火星着陆。当前火星车状态良好步履稳健能源充足,后续将继续向乌托邦平原南部的古海陆交界地带行驶,实施拓展任务。在巡视探测期间,祝融号python爬取网络图片保存到本地python爬取网络图片保存到本地这里把爬取的网站地址处理掉了。直接展示不好。经常找壁纸的童鞋,应该会知道我爬的是哪个网站(找不到狗头)fromtypingimportList,AiOS14系统最后的绝唱可能是iOS14的最后一次更新iOS14。7发布7月20日,苹果公司发布了iOS14。7和iPadOS14。7两个系统版本的推送,这是iOS14自推出以来的第7次正式版本更新。iOS和iPadOS14。7更新可以免费下载,该软件优惠8万可以考虑,高配才配2。0T,不过比GLA强近日,22款奥迪Q3正式上市,新车共推出6款车型,售价区间为27。8832。36万元,值得注意的是本事改款,还推出了RS套件燃速型。下面就随小编一起了解一下这款车吧。外观方面,新车在某种意义上,所有的AMG都不是AMG,除了它提起梅赛德斯AMG,很多人都把它和运动和优雅联系在一起,这是因为绝大多数AMG车型都是基于梅赛德斯奔驰的现有车型打造,包括知名的AMGC63AMGG63AMGA45等车型。正是因为iPhone13最高或有1TB存储,64G存储将成绝唱吗离九月份iPhone13发布,还有差不多两个月,越到临近发布会越是让我们果粉期待iPhone13的真面目,众多爆料信息也让iPhone13不在模糊,变得清晰起来了,而且根据往年经验15002000推荐购买的三款手机截止到2021年4月,给大家推荐三款价位在15002000元之间综合考虑最值得购买的三款手机,咱们直接进入正题。第一款,红米K406GB128GB红米K40搭载年度旗舰骁龙870W最便宜5GiPhone将在明年上半年推出iPhoneSE3明年上半年推出最近关于今年新iPhone13的消息很多,但苹果iPhoneSE产品线也受到不少用户的关注。此前,分析师郭明錤称,苹果很有可能在2022年的上半年推不是桌面壁纸,是实景!满山遍野的油菜花,7月是最佳观赏期我不是专门搞旅游的一个人,职业也跟旅游无关,但这不妨碍我喜欢到处游玩。我记得在之前就写过关于青海祁连的风景,很多人都认为在青海就应该去青海湖茶卡盐湖鸟岛等等。诚然,青海是这个地方真坦克500和坦克400该如何选择?在成都车展举办期间,坦克官方宣布坦克500正式开启预售,限量1000台。就在开放预售的瞬间,1000台坦克500当即被秒完,可见其火爆程度。同期推出的还有坦克400车型。坦克自上海三十而已成功的女性没有标准,幸福的女人没有范式导言女人应当活出怎样的姿态,没有标准答案。我们终其一生不是为成为幸福女人,而是在身为女人的一生中体会幸福,成就自我。三十而已,并非有关职场乱斗或两性和谐的教育片,而是一场引导我们回