美文网首页
项目中的收发信模块-PHP

项目中的收发信模块-PHP

作者: 与子笑 | 来源:发表于2018-05-20 09:46 被阅读0次

php  @amazeUI  2016-11-16 15:25:07

        基于:

        1.发信,有免费发信和付费发信,免费发信则收信方需要查看信件的权利,付费发信会与收信方形成一个一对一的通道,这个通道的有效期为永久,拥有通道则可以一对一无限次免费收发信,还有一种是会员发信,会员发信免费,收信方也可以与对方免费互动信件,有效期为会员过期日。

        2.收信,更准确的来说叫拆信,有无权利看对方的来信,能看信的情况有这几种,已有通道,自己或对方是会员,自己付费看新。

        3.按照以上两点需求,为了安全起见,拆信只针对信件而不是针对人。可以得出所有每一封信件的拆信判断的依据都在于信件本身的状态,1为有权利拆,0为没权利拆。如果免费发信给对方,则状态为0,自己是会员或者有通道发出去的信的状态为1。

        基于上述1,2的功能,可以得出结论,无论是发信还是拆信,都需要判断自己是否为会员,是否有通道,本封信是否为自己付费。可以按顺序做出一个公用的方法调用。拆信只需要看来往的最后一封信件的状态是否为0。但是有几点情况,如果仅仅只基于这些逻辑,还是会有漏洞,比如用户1发出免费信件给用户2,信件状态为0,此时用户1自己能看自己发出的信件吗,当然可以看,自己看自己发的信有什么不能看,所以这里要做判断,如果最后一封信件由自己发出那就可以看。那这就会出现一个漏洞,此时用户2不拆这一封信,而是去用户列表找到用户1免费发一封信,状态也为0,基于只能判断来往的最后一封信件状态,用户2可以拆开这一封信,这样一来也就能看到所有聊天记录了。

        以上就是收发信件的核心逻辑,再有就是安全判断了,因为收发信涉及到交易,所以需要对漏洞方面多加关注,比如,如果是按最后一封信件的状态来拆信,那肯定就有信件id,那就有可能别人瞎填一个id,可能会出现不可预料的问题甚至报错,所以拆信就需要做判断,根据这封信的id信息查到此封信件的收信者是不是当前用户且是否为与当前用户的最后一封信件,因为会员是有生命周期的,如果是,再来判断是否有权力拆信。等等等等,在拆信后,还有上一封信件和下一封信件,是针对用户而不是每一封信,上一封信是上一个与我来往的且我未查看的最后一封信的id,下一封一样,这里需要做数据处理,收信箱和发信箱里的上一封下一封逻辑略有不同。基本上所有拆发信,都要经过的安全判断,是否有这一封信,这封信的发信人或收信人是否存在,拆信的时候要判断这封信是否是写给自己的,要判断这一封信的状态。经过文字的描述和总结,这个模块的结构在我脑袋里更加的清晰,我可以把这个模块再优化一下减少不必要的查询,可以让代码看起来更加简洁易懂。明天上伪代码。

相关文章

  • 项目中的收发信模块-PHP

    php -@amazeUI -2016-11-16 15:25:07 基于: 1.发信,有免费发信和付费发信,...

  • 项目中的收发信模块

    此文为记录以往项目代码。是写给自己的。 基于: 发信,有免费发信和付费发信,免费发信则收信方需要查看信件的权利,付...

  • 收发信-PHP

    php -@amazeUI -2016-11-17 15:01:38 收发信:做了一个基础类,里面有各种判断和对数...

  • JAVA小项目-管家婆记账本介绍(1)

    今日内容介绍1、管家婆项目 01项目训练目标 02项目中的功能模块 03技术的选择和相关jar包 04项目中的工具...

  • 商城项目总结

    实施步骤: 1. 项目简要分析和设计 分析项目中各模块功能,例如用户模块、商品模块等。 采用常用的MVC模式构建项...

  • 16、TP5框架中配置文件加载的优先级

    打开应用配置文件/application/config.php,添加配置项: 创建模块配置文件/applicati...

  • php扩展模块安装过程

    简介 安装php模块,不需要重新编译php,可以动态扩展php模块。 例子 以安装msgpack模块为例:(此处p...

  • php扩展模块安装

    目录 php扩展模块安装 php扩展模块安装 PHP一旦编译完成后,要想再增加一个功能模块的话,要么重新编译PHP...

  • lamp(九)——php模块安装

    11.32 php扩展模块装安 php扩展模块装安 php和apache类似,可以功能模块话。编译后生产有新需求不...

  • PHP 常用扩展模块

    php 扩展主要分为两类: php模块扩展和zend模块扩展。 php模块扩展 bz2 用于透明地读写 bzip...

网友评论

      本文标题:项目中的收发信模块-PHP

      本文链接:https://www.haomeiwen.com/subject/zhvzdftx.html