1. 【强制】隶属于用户个人的页面或者功能必须进行权限控制校验。 说明:防止没有做水平权限校验就可随意访问、修改、删除别人的数据,比如查看他人的私信 内容、修改他人的订单。
2. 【强制】用户敏感数据禁止直接展示,必须对展示数据进行脱敏。 说明:查看个人手机号码会显示成:158****9119,隐藏中间 4 位,防止隐私泄露。
3. 【强制】用户输入的 SQL 参数严格使用参数绑定或者 METADATA 字段值限定,防止 SQL 注入, 禁止字符串拼接 SQL 访问数据库。
4. 【强制】用户请求传入的任何参数必须做有效性验证。 说明:忽略参数校验可能导致:
page size 过大导致内存溢出 恶意 order by 导致数据库慢查询 任意重定向 SQL 注入 反序列化注入 正则输入源串拒绝服务 ReDoS
说明:Java 代码用正则来验证客户端的输入,有些正则写法验证普通用户输入没有问题, 但是如果攻击人员使用的是特殊构造的字符串来验证,有可能导致死循环的结果。
5. 【强制】禁止向 HTML 页面输出未经安全过滤或未正确转义的用户数据。
6. 【强制】表单、AJAX 提交必须执行 CSRF 安全过滤。 说明:CSRF(Cross-site request forgery)跨站请求伪造是一类常见编程漏洞。对于存在 CSRF 漏洞的应用/网站,攻击者可以事先构造好 URL,只要受害者用户一访问,后台便在用户 不知情情况下对数据库中用户参数进行相应修改。
7. 【强制】在使用平台资源,譬如短信、邮件、电话、下单、支付,必须实现正确的防重放限制, 如数量限制、疲劳度控制、验证码校验,避免被滥刷、资损。 说明:如注册时发送验证码到手机,如果没有限制次数和频率,那么可以利用此功能骚扰到其 它用户,并造成短信平台资源浪费。
8. 【推荐】发贴、评论、发送即时消息等用户生成内容的场景必须实现防刷、文本内容违禁词过 滤等风控策略。
附 1:版本历史
版本号 更新日期 备注
1.0.0 2017.2.9 阿里巴巴集团正式对外发布
1.0.1 2017.2.13 1)修正 String[]的前后矛盾。2)vm 修正成 velocity。3)修正 countdown 描述错误。
1.0.2 2017.2.20
1)去除文底水印。2)数据类型中引用太阳系年龄问题。3)修正关于异常和方法签名的部
分描述。4)修正 final 描述。5)去除 Comparator 部分描述。
1.1.0 2017.2.27
1)增加前言。2)增加<? extends T>描述和说明。3)增加版本历史。4)增加专有名词
解释。
1.1.1 2017.3.31 修正页码总数和部分示例。
1.2.0 2017.5.20
1)根据云栖社区的“聚能聊”活动反馈,对手册的页码、排版、描述进行修正。2)增加 final
的适用场景描述。3)增加关于锁的粒度的说明。4)增加“指定集合大小”的详细说明以及
正反例。5)增加卫语句的示例代码。6)明确数据库表示删除概念的字段名为 is_deleted
附 2:本手册专有名词
1. POJO(Plain Ordinary Java Object):在本手册中,POJO 专指只有 setter / getter / toString 的简单类,包括 DO/DTO/BO/VO 等。
2. DO(Data Object):本手册指数据库表一一对应的 POJO 类。
3. GAV(GroupId、ArtifactctId、Version):Maven 坐标,是用来唯一标识 jar 包。
4. OOP(Object Oriented Programming): 本手册泛指类、对象的编程处理方式。
5. ORM(Object Relation Mapping): 对象关系映射,对象领域模型与底层数据之间的转换, 本文泛指 iBATIS, mybatis 等框架。
6. NPE(java.lang.NullPointerException): 空指针异常。
7. SOA(Service-Oriented Architecture): 面向服务架构,它可以根据需求通过网络对松散 耦合的粗粒度应用组件进行分布式部署、组合和使用,有利于提升组件可重用性,可维护性。
8. 一方库:本工程内部子项目模块依赖的库(jar 包)。
9. 二方库:公司内部发布到*仓库,可供公司内部其它应用依赖的库(jar 包)。
10. 三方库:公司之外的开源库(jar 包)。
法律声明 本手册为阿里巴巴集团技术部的技术分享,版权归阿里巴巴集团所有,仅供大家交流、学习及研究 使用,禁止用于商业用途,违者必究。