哪个网站建设公司,国内设计欣赏网站,大型手游网络游戏排行榜,上海环球金融中心简笔画#x1f64a;前言#xff1a;本文章为瑞_系列专栏之《Java开发手册》的安全规约篇。由于博主是从阿里的《Java开发手册》学习到Java的编程规约#xff0c;所以本系列专栏主要以这本书进行讲解和拓展#xff0c;有需要的小伙伴可以点击链接下载。本文仅供大家交流、学习及研… 前言本文章为瑞_系列专栏之《Java开发手册》的安全规约篇。由于博主是从阿里的《Java开发手册》学习到Java的编程规约所以本系列专栏主要以这本书进行讲解和拓展有需要的小伙伴可以点击链接下载。本文仅供大家交流、学习及研究使用禁止用于商业用途违者必究 本系列第一篇链接一编程规约 本系列第二篇链接二异常日志 本系列第三篇链接三单元测试 安全规约的意义 安全规约主要是为了保障代码的安全性从而减少系统被攻击的风险。安全规约包括但不限于防止SQL注入、XSS攻击、CSRF攻击、文件上传漏洞、文件包含漏洞等方面的安全问题。制定这些规则的目的并不是为了约束和禁锢开发者的创造力而是为了帮助大家能够在正确的道路上尽可能的避免踩坑和跑偏。规则可能会对代码实现造成影响但是制定规则的主要目标是为了让大多数程序员小伙伴可以得到更多的好处。如果在团队实际运作中认为某个规则无法遵循或有更好的做法希望大家可以共同改进该规范。 安全规约的意义在于
防止安全漏洞安全规约提供了一系列的安全实践和建议帮助开发者避免常见的安全漏洞如SQL注入、跨站脚本攻击XSS等。提高代码质量遵循安全规约可以促使开发者编写更加健壮、可靠的代码。通过避免不安全的代码实践可以提高代码的整体质量减少潜在的错误和问题。增强安全性意识安全规约强调了安全在软件开发中的重要性促使开发者更加关注安全性问题。通过学习和遵守安全规约可以提高开发者的安全意识使安全性成为整个开发团队共同关注的问题。统一安全标准安全规约可以作为统一的安全标准确保所有开发人员遵循相同的最佳实践和准则。这有助于在整个项目中保持一致的安全水平并减少安全相关的风险。减少维护成本遵循安全规约可以降低软件维护成本。安全的代码更易于维护、调试和使用减少了对安全问题的修复和加固的成本。合规性对于一些特定行业或应用场景可能需要遵循特定的安全标准和法规。遵循安全规约可以帮助开发者确保其代码符合这些标准和法规要求避免因不合规导致的法律风险和责任。
安全规约
【强制】隶属于用户个人的页面或者功能必须进行权限控制校验。 说明防止没有做水平权限校验就可随意访问、修改、删除别人的数据比如查看他人的私信内容。 瑞水平权限校验是指对用户个人页面或功能的访问权限进行校验以确保只有经过授权的用户才能访问或修改特定的数据。这种校验通常用于防止未授权的用户随意访问、修改或删除他人的数据以保护数据的隐私和安全性 【强制】用户敏感数据禁止直接展示必须对展示数据进行脱敏。 说明中国大陆个人手机号码显示为:137****0969隐藏中间 4 位防止隐私泄露。 瑞手机号脱敏代码如下正则表达式参考 public static String maskPhoneNumber(String input) {// 匹配手机号的正则表达式String phonePattern (\\d{3})\\d{4}(\\d{4});// 数据脱敏将匹配到的手机号中间四位替换为星号return input.replaceAll(phonePattern, $1****$2);}【强制】用户输入的 SQL 参数严格使用参数绑定或者 METADATA 字段值限定防止 SQL 注入禁止字符串拼接 SQL 访问数据库。 反例某系统签名大量被恶意修改即是因为对于危险字符 # --没有进行转义导致数据库更新时where后边的信息被注释掉对全库进行更新。 瑞❗️本条为神坑 ❗️ 有小可爱在使用 JDBC 编写SQL时为了方便调试❌选择用如String.format的方式拼接SQL语句❌拼接出的SQL语句如下所示假设现在用户使用Ray -- 注意要空格SQL注入为需要修改的用户名直接导致where语句之后的信息全部被注释导致了全表更新❗️ ❗️ ❗️ UPDATE user SET nick_name Ray -- ’ WHERE is_deleted 0 and id 1 如果是使用MyBatis等框架请使用#{}#param# 。不要使用${} 此种方式容易出现 SQL 注入。 【强制】用户请求传入的任何参数必须做有效性验证。 说明忽略参数校验可能导致 page size 过大导致内存溢出恶意 order by 导致数据库慢查询缓存击穿SSRF任意重定向SQL 注入Shell 注入反序列化注入正则输入源串拒绝服务 ReDoS Java 代码用正则来验证客户端的输入有些正则写法验证普通用户输入没有问题但是如果攻击人员使用的是特殊构造的字符串来验证有可能导致死循环的结果。 瑞本条建议配合测试使用 【强制】禁止向 HTML 页面输出未经安全过滤或未正确转义的用户数据。 瑞为了防止跨站脚本攻击XSS 【强制】表单、AJAX 提交必须执行 CSRF 安全验证。 说明CSRF(Cross-site request forgery)跨站请求伪造是一类常见编程漏洞。对于存在 CSRF 漏洞的应用/网站攻击者可以事先构造好 URL只要受害者用户一访问后台便在用户不知情的情况下对数据库中用户参数进行相应修改。 【强制】URL 外部重定向传入的目标地址必须执行白名单过滤。 瑞如果服务端未对传入的跳转url变量进行检查和控制恶意攻击者可以构造一个恶意地址诱导用户跳转到恶意网站。由于跳转是从用户信任的站点进行的用户很可能会不加怀疑地信任该跳转从而受到钓鱼攻击或其他网络欺诈。所以为了开发人员的清白懂的都懂 【强制】在使用平台资源譬如短信、邮件、电话、下单、支付必须实现正确的防重放的机制如数量限制、疲劳度控制、验证码校验避免被滥刷而导致资损。 说明如注册时发送验证码到手机如果没有限制次数和频率那么可以利用此功能骚扰到其它用户并造成短信平台资源浪费。 瑞尤其是登录密码校验如果不设置限制和频率那么密码就容易被暴力破解 【推荐】发贴、评论、发送即时消息等用户生成内容的场景必须实现防刷、文本内容违禁词过滤等风控策略。 瑞博主认为本条不应该是推荐而是【强制】同第7条懂的都懂 本文是博主的粗浅理解可能存在一些错误或不完善之处如有遗漏或错误欢迎各位补充谢谢 如果觉得这篇文章对您有所帮助的话请动动小手点波关注你的点赞收藏⭐️转发评论都是对博主最好的支持~