php中使用in_array易产生代码安全漏洞
来源:互联网 发布:medibang paint mac 编辑:程序博客网 时间:2024/05/16 15:38
执行上面的代码看看,你想说什么?
我是惊出了冷汗的
in_array常被老手们这样用做变量检查,但显然结果并不靠谱。
为什么会这样呢?再试试这个
问题似乎是PHP的默认类型转换造成的,数字与字符串比较时,字符串先被强制转成数字再进行了比较。真的是这个原因吗?爱较真的朋友请自行查看PHP源码,没准你还会发现其他问题。
其实in_array提供有第三个参数(默认为false),用于执行严格的类型检查,避免这个问题只需将其设置为true,但不是每个人都留意使用。搜了一下WordPress源码中使用 in_array 263处,许多关键处都使用了第三个参数,看来自己离老手还差得远那。
多少要埋怨一下,为什么不把第三个参数默认为true呢,这也太容易让人犯猎了。想想原因也很简单,为了保持PHP在类型处理上的一致性,就是让像下面的代码结果与你的期望一致。
最后想说的是,这不构成对PHP弱类型诟病的理由,这是WEB开发的特点确定的,如果让代码中充斥大量类型检查和类型转换会更让人难以忍受,让使用PHP的开发者有大刀阔斧、畅快淋漓的快感,是我喜欢PHP的原因之一。
但缺点确实是存在的,解决方案已经给出,本例中你可以在需要时为in_array设置第三个参数,或者使用另一个函数array_search。
打出”安全漏洞“的题目,标题党一回了,给新手也给自己提个醒。
- php中使用in_array易产生代码安全漏洞
- PHP中in_array函数使用的问题与解决办法
- php in_array
- php in_array
- PHP中in_array 效率及其优化
- php中in_array需要注意的一点
- 为什么PHP中in_array效率低
- PHP 中 in_array 需要注意的一点
- PHP中测试in_array、isset、array_key_exists性能
- PHP的in_array() 函数使用详解
- 关于正确使用PHP的in_array数组
- 像php一样,在smarty模板中使用in_array检查数组值
- 使用js判断数组中是否包含某一元素(类似于php中的in_array())
- PHP 中 in_array 函数的用法与注意项
- php中几个数组函数array_slice() array_filter array_unique() in_array()
- php 中in_array判断0时不存在返回true
- php in_array 判断数组中是否存在此元素
- php中array_search和in_array有什么区别
- 打算把家搬来这里
- 解决vim对django中的models类字段自动补全失效的问题
- 我所理解的Twitter是什么?
- 使用 Duff 设施实现协程
- ASP.NET生成静态页面实现方法
- php中使用in_array易产生代码安全漏洞
- 生成静态文件的新闻系统核心代码
- 郁闷
- 使用ASP.NET从零开始制作设计网站之三
- Asp.net 2.0 中将网站首页生成静态页的一个比较好的方法
- 我的第一次接触Csdn--心里很不痛快
- 指针
- 在DM355平台上如何在应用层直接控制GPIO----操作arm的寄存器
- jQuery表格排序组件-tablesorter