分类 杂谈 下的文章

如果在php的“二维”数组生成的时候使用IIFE unset掉,会不会变成一维?

所谓联想

受到腾讯一道面试题的启发(不确定是否为官方原题,但至少我看到的这个版本在题目的描述上就存在问题)

什么是php的多维数组类型?
A、php的值也是多种数据类型
B、php的值也是数组类型
C、php的索引值有数字和字母
D、以上都是

云运算一下

这里有一段代码,试着 运算一下?

<?php
$a = ['test'=>["test"],
    "b"=>(function (&$a){
      unset($a['test']);
      $a['c']='aaa';
})($a)];
var_dump($a);
?>

如果你的答案是

//type 1
array(2) {
  ["b"]=>
  NULL
  ["c"]=>
  string(3) 'aaa'
}
//type 2
array(1) {
  ["c"]=>
  string(3) 'aaa'
}

这两个中的一个的话,那可能你要非常小心了。因为这两个是不正确的。
正确答案

array(2) {
  ["test"]=>
  array(1) {
    [0]=>
    string(4) "test"
  }
  ["b"]=>
  NULL
}

解析

如果你没有仔细的考虑或者了解过IIFE亦或者php的语句执行的话,那你可能就会很重要中招了。
我们逐句来读这段代码

$a = ['test'=>
["test"],//生成二维数组,键是test,值是以test为值,0为键的一维数组
    "b"=>(function (&$a){ //IIFE,参数为$a的指针
      unset($a['test']); //删除$a的test
      $a['c']='aaa';//新增键c,值为aaa
})($a)];
var_dump($a);

上面已经把重要语句逐句理清楚了。咋一看没什么问题,仔细一看也没什么问题,但是问题是“答案为什么和我想的不一样”
问题在哪里呢?

答案在IIFE上

IIFE的参数是$a,可是想像一下,在执行这个函数之前,$a真的存在吗?如果不存在,那传递的这个地址(指针)就是空指针,等于新建了一个变量而已。
对,这就是答案。可是为何?
因为这一条语句并没有执行完成,也就是说,其实这里的二维数组还没有赋值给变量 $a,自然在调用这个变量的时候,就是空的了。
所以在二维数组生成的时候,用IIFE是没有办法unset掉的,这就回答了标题里面的问题。

新的风暴已经出现

那么,回到这道面试题,我新提出的问题是,“在声明一个二维数组时,二维数组的第一级键的值一定有数组”。这句话,对吗?我不知道是否有人看到这篇文章,但是答案我已经知道了。而且可以告诉你————不对。
一个IIFE所给的反例:

$a = ['test'=>'',
    "b"=>(function (){
      return ['I am fisher, 2 divs array'];
})()];
var_dump($a);

云运算一下,来碰一碰?

杂谈知行理工app

首页

【背景提要】

众所周知,理工推出了一款“新型”app,叫做“知行理工”。多方宣传啊,到处都能看见咱家特产的广告。当然啦,按道理来讲,这款皇家定制的App会带给我们一些新的体验才对。毕竟几十年的文化沉淀,终于产生了这款app。官网的主页设计,也确实很棒,于是怀着期待的心情,在官网找到了TA

【前情提要】

刚一下载,看完安装包大小,心就黑了半截。22M的app,里面该包藏着怎样的“情怀”!
安装上了,界面还算中肯,UI也还ok,毕竟22M,光放图标肯定也填不满这么多。

可是,用了一会,我真的越想不通了。

你说这软件啊,真的就这么奇怪。隔壁工商和咱们一样的app(理工的是外包给一个叫云华科技公司的?Maybe!),一个10M,一个20M,功能也差不多,怎么他就这么大!怎么他就这么大!怎么他就这么大!

于是我就被这个问题占满我的头脑啊,我就在想啊,我要破解这个秘密啊,想想就很刺激啊!
疑问:这个app,这么大,肯定是有问题的呀,问题在哪,不好说。但是可以猜啊,于是我

-------------以下内容少儿不宜,请回避-----------------

【提出猜想】

猜想:知行理工==知行浏览器
证明:利用fd抓一下包。
结果呢,不抓不知道,一抓包就暴露出来几个比较严重的问题(见详细).

【探索与发现】

这里提一下发现内容以及一些软件设计本身令人诟病的地方 :
1.软件登陆实质上是post数据给
post数据
这里,数据是表单,内容:userid=学号 password=MD5加密后的密码(初始密码是身份证后六位或者00000)
现在互联网安全发展很快,很多人以为MD5真的是安全的,甚至不少公司现在都是采用的md5加密,以前很安全,毕竟是不可逆的,至于现在嘛,百度关键词:彩虹表。
当然,当时对于大公司来说,MD5加密也是远远不够的。现在,哪怕是小公司甚至个人博客,大多数加密都至少采用了加盐的方式,一切都是为了安全!这一点我非常不能理解,加盐并不难,却可以更加安全,技术上不是不能做到,而是非常简单的一件事。出于这一条,甚至对这个app的安全问题有一些怀疑!于是见第二条
2.登陆并没有要求输入验证码,验证码意味着什么?很简单,防止暴力破解密码!你会想啊,默认密码身份证后六位,9^6=43046721,这数字想都不敢想啊,机器也需要很长时间把?啊?可是,后六位的构成是有规律的,真正的数字远远小于这个数字,见百度百科~还有些密码是六个0的呢?说这么多,我知道一定会有人说这句话,“你就这么一个小软件,谁会在乎呢?用的人又不多”。确实是这样,这点让我好歹还有了一些信心。不过请看第三条
3.登陆之后干些什么好呢?试用功能?不,我已经用过了!突然,我又想到了第一条我提到的那个页面,好奇心驱使下,我直接访问了那个链接(不带参数)。没错,一片空白!可是我现在在猜TA就是一个浏览器啊!浏览器能干什么啊?拿给用户看啊!看什么?看访问结果啊!于是,带参数访问了这个地址,什么,你问我怎么访问?好吧,
访问
页面刷新出来的时候,脑子立马炸了。你问我为什么?我见到的是一个JSON。于是我把他整理出来,见下图
个人资料json
我的身份证号码竟然没有加密的就这样摆在我的面前,我几乎不敢相信!有没有一点安全意识?我也没有看见app内有哪个模块引用了身份证这一条。
那么,话又说回来,为什么不加密?打个星号加个密也ok啊。然而并没有!假如,我是说有人刚好这么无聊,刚好扫到了我的号,刚好像我这样老是想着研究为什么这款软件会这么大?那么,是不是我的户 [防伪] 籍已经出来了?不该调用的东西,请让TA安安静静的呆在数据库里。那里环境很不错,请不要时不时的拿出来晒一下阳光!
如此,已经没兴趣看下去了,拖动图标,准备卸载。回眸之间,发现了一些更有趣的东西。还记得我抓包的初衷吗?验证这个软件就是一款浏览器!对没错。下面的内容完美证明,这就是“知行浏览器”!

4.部分功能表格
好吧,这款软件我最喜欢的就是教室查询这个功能,然而,并不需要安装这个软件就能访问~我即将被这款“知行浏览器”打败,但是这还不算完,请看下面第五点

  1. (1)软件申请权限过多!
    其实这不是个别问题,而是普遍问题,国内的软件现在已经有了一个趋势,“管他权限有没有用呢,我先拿到手再说”。为了方便说明,将其整理为一张图,请看下图(点击查看原图,防止压缩,手机党请无视)。
    点击展开,查看完整图片
    权限列表
    总共有14个权限!其中没有任何*用的权限有:振动器、GPS定位、相机使用无需确认、阻止手机休眠。
    好吧。前面两个我都能理解, 振动器可以用来提醒日历上的日程安排时间到期,GPS是为了方便“校园地图”定位。可是,你申请相机的使用权干什么?上传头像?那只需要访问SD卡权限,已经有了,谢谢。阻止手机休眠?干啥子,想要常驻后台?还是屏幕常亮?打开你之后你就“旋转、跳跃,你不停歇了”?

(2)这个App在activity里面,有一个JPUSH极光推送的activity。这个activity比较有趣,TA有个相互唤醒功能,会自动唤醒QQ和UC(睡美人,这两玩意是你家人?),也就是说,你打开这款软件,相当于还打开了UC &QQ全家桶
(马化腾提醒您,您订购的腾讯软件十件套已送到,请查收)

【废话总结】

以上就是证明 知行理工=知行浏览器的全部过程。

【建议】

权当是一个小透明给大老板们提供的一个小小的建议吧。毕竟,软件是你们的,数据库也是你们的。听不听也是你们的!
1.添加验证码机制
2.密码请使用md5加盐加密
3.拼命的减小安装包大小,而不是变着法的增大安装的体积!百度地图的sdk完全可以精简,因为基本上没有人用那个校园地图的功能,因为,校园地图.jpg就能搞定的事情,并不需要你去用2M多的安装包体积来换!
4.精简权限、activity。这只是针对理工人自己的app,请不要像手机QQ那样,巴不得把所有的软件功能都装在自己身上!
5.使用安全套接字层超文本传输协议。https要不了多少钱!
6.身份证号码、手机号、QQ号请至少用星号加密!!既然没有地方需要他显示的,就让他好好的呆在数据库里面,不要放出来!这很不理工!!
7.20多M这对于大部分都是2G RAM的手机而言,并不多。但是如果能把这20M的内容变得更加丰富,比如有个自己的论坛、自己的二手交易市场、活动市场。我相信,即使是30M,装的人绝对不在少数!App需要活力、需要维护,而不是就这样,弄好了,滥竽充数,便甩手了之!
8.若有幸让这个项目的负责人看到,如果觉得我的建议没什么用。请无视,并不要查我水表!只是实话实说,只是一个app用户自己的心声。安心做好网页,而不是把定制过的浏览器变成app,告诉我们这就是客户端!如果觉得我的建议还算中肯,能够采纳,当然那更好。不过,这样的几率能有多少?

如何在百度贴吧保护自己的资料“安全”

随着时代发展,贴吧的开放讨论模式,引来了越来越多的人玩贴吧。当然,随之而来的也有不少盗号、“被查资料”、“被人肉”等等现象产生。
那么我们如果才能在贴吧保护好自己的资料呢?
最简单的办法,当然是不玩啦这特么不是废话?
我们可以从以下几个方面来尽量保护自己的资料,让自己变得神秘、高冷起来。(主要还是为了安全

  • 密码位数不要太短,最好包括下划线、数字、字母
  • 不要在个人主页留下资料!尤其是自己的注册邮箱之类千万不要泄露
  • 开启密码保护,设置密保
  • 在 贴吧设置 中设置 不允许任何人关注我,并隐藏我的个人动态 ,同时在 客户端 也设置好隐私保护
  • 在第二点的设置中,同时关闭显示知道、文库、百科等动态的显示

最后一点,我把它单列出来,这也是我认为最最重要的一点

  • 不要去随便的招惹别人。三观一定要正,不撕逼,不吵架
  • 只要严于律己,一心向善。别人不会无故招惹你的~
    愿每一位看到的朋友,都能严格要求自己。