凭空想象的web功能开发标准(性能,负载,可用性,安全,审计等多侧面)

重要数据的变动记录,及保留历史版本

对重要数据变动,做日志记录,必要的保留历史版本。可选技术方案:将所有历史版本数据存储在k-v表中,允许随时丢失部分或全部

缓存、临时文件及日志

允许这类数据存储在易失性设备上,如内存缓存。允许随时丢失部分或全部,程序不得崩溃(鲁棒性)

自己擦屁股,自动归档旧数据,尤其是存储到数据库中的旧数据,如日志表,临时文件等。至少要有相关文档,指明哪些是此类数据,如何清理,清理是否会带来后遗症(理想 状态是可以任意删除,程序本身健壮工作)

用户行为记录

uv, pv, 类似GA ,或者直接使用第三方服务

单个用户的足迹,按用户、回话划分。登陆用户的记录很自然;非登陆用户,也要有区分方案,可以类似于app中device token的实现原理。负载均衡下要按session划分。

关键步骤的记录。

分别对待:

不产生服务器上数据变更的行为,注意是浏览、搜索等行为,类似HTTP get方法的约定。选特定行为,做记录

产生服务器上数据变更的行为。无条件记录:数据产生人,时间,源IP等必要信息。数据更改及删除,还需要记录原始数据,目标:可快捷低成本的追溯历史。

 

统计类数据

统计类数据,如文章点击量,定期快照(如按月、天、小时),或者记录一定粒度(如小时,天)时间段的统计量

防范资源滥用

高资源消化的操作做qps限制

关键请求上,针对单用户限制授权额度。这里的“用户”是宽泛概念,可以是用户账号,session, ip等多种

重要信息分级

防止重要信息被批量采集,将这些信息分级,对不同用户级别用户展示相应部分。初级用户只能看到极少部分。

严格限制列表页:不得查询未授权的内容,防止越权读取。

账号密码管理

传统的用户名密码方式,在实际使用过程中,使用人员一定会共享账号,且密码修改非常不及时。(通常是将账号密码放在文件里,如果有工作交接,直接将文件转发,或者直接在QQ里发送账号密码。因为这比“找相关人员新开设账号、设置权限”简单太多了为了。为了不影响别人使用,所以几乎都不会改密码)然而这都是重大的安全隐患。

邮箱作账号,登录后通过邮箱做验证,避免账号共享,强迫通过管理人员赋权限。企业邮箱是第三方服务,一般有较好的密码策略。

用户在同ip段登录只验证一次,若干时间内不需要重复验证。

如果多个用户在某ip段成功验证,其他人员也可以在该ip上通免验证。

超过一定时间不登录的账号,禁止登录,需要重新邮箱激活才可。

超过一定时间不使用的权限,自动撤销。这样,通常就不需要管理员取消授权。

功能设计原则(底线)

不希望用户操作、不希望用户看到的东西,不要列出来

必要的说明:正确,简明,有效,隐藏

不挑战用户习惯

有用的参考资料

  • 信息安全标准目录 http://www.cnblogs.com/merray/p/5315066.html

 




coded by nessus
发表评论?

0 条评论。

发表评论