【安全自检checklist】在自己的服务器和网站上有环节哪些需要自检?系统权限校验、用户数据和权限校验、安卓和 iOS APP自检、安全头信息和配置

安全checklist

权限系统 (注册/注册/二次验证/密码重置)
  • 任何地方都使用 HTTPS.
  • 使用 Bcrypt 存储密码哈希 (没有使用盐的必要 - Bcrypt 干的就是这个事).
  • 登出之后销毁会话 ID .
  • 密码重置后销毁所有活跃的会话.
  • OAuth2 验证必须包含 state 参数.
  • 登陆成功之后不能直接重定向到开放的路径(需要校验,否则容易存在钓鱼攻击).
  • 当解析用户注册/登陆的输入时,过滤 javascript://、 data:// 以及其他 CRLF 字符.
  • 使用 secure/httpOnly cookies.
  • 移动端使用 OTP 验证时,当调用 generate OTP 或者 Resend OTP API 时不能把 OTP(One Time Password) 直接返回。(一般是通过发送手机验证短信,邮箱随机 code 等方式,而不是直接 response)
  • 限制单个用户 LoginVerify OTPResend OTPgenerate OTP 等 API 的调用次数,使用 Captcha 等手段防止暴力破解.
  • 检查邮件或短信里的重置密码的 token,确保随机性(无法猜测)
  • 给重置密码的 token 设置过期时间.
  • 重置密码成功后,将重置使用的 token 失效.
用户数据和权限校验
  • 诸如我的购物车我的浏览历史之类的资源访问,必须检查当前登录的用户是否有这些资源的访问权限.
  • 避免资源 ID 被连续遍历访问,使用 /me/orders 代替 /user/37153/orders 以防你忘了检查权限,导致数据泄露。
  • 修改邮箱/手机号码功能必须首先确认用户已经验证过邮箱/手机是他自己的。
  • 任何上传功能应该过滤用户上传的文件名,另外,为了普适性的原因(而不是安全问题),上传的东西应该存放到例如 S3 之类的云存储上面(用 lambda 处理),而不是存储在自己的服务器,防止代码执行。
  • 个人头像上传 功能应该过滤所有的 EXIF 标签,即便没有这个需求.
  • 用户 ID 或者其他的 ID,应该使用 RFC compliant UUID 而不是整数. 你可以从 github 找到你所用的语言的实现.
  • JWT(JSON Web Token)很棒.当你需要构建一个 单页应用/API 时使用.
安卓和 iOS APP
  • 支付网关的 盐(salt) 不应该被硬编码
  • 来自第三方的 secretauth token 不应该被硬编码
  • 在服务器之间调用的 API 不应该在 app 里面调用
  • 在安卓系统下,要小心评估所有申请的 权限
  • 在 iOS 系统下,使用系统的钥匙串来存储敏感信息(权限 token、api key、 等等) 不要 把这类信息存储在用户配置里面
  • 强烈推荐证书绑定(Certificate pinning)
安全头信息和配置
  • 添加 CSP 头信息,减缓 XSS 和数据注入攻击. 这很重要.
  • 添加 CSRF 头信息防止跨站请求伪造(CSRF)攻击.同时添加 SameSite 属性到 cookie 里面.
  • 添加 HSTS 头信息防止 SSL stripping 攻击.
  • 添加 你的域名到 HSTS 预加载列表
  • 添加 X-Frame-Options 防止点击劫持.
  • 添加 X-XSS-Protection 缓解 XSS 攻击.
  • 更新 DNS 记录,增加 SPF 记录防止垃圾邮件和钓鱼攻击.
  • 如果你的 Javascript 托管在第三方的 CDN 上面,需要添加 内部资源集成检查 。为了更加安全,添加require-sri-for CSP-directive 就不会加载到没有 SRI 的资源
  • 使用随机的 CSRF token,业务逻辑 API 可以暴露为 POST 请求。不要把 CSRF token 通过 http 接口暴露出来,比如第一次请求更新的时候
  • 在 get 请求参数里面,不要使用临界数据和 token。 暴露服务器日志的同时也会暴露用户数据
过滤输入
  • 所有暴露给用户的参数输入都应该 过滤 防止 XSS 攻击.
  • 使用参数化的查询防止 SQL 注入.
  • 过滤所有具有功能性的用户输入,比如 CSV导入
  • 过滤一些特殊的用户输入,例如将 robots.txt 作为用户名,而你刚好提供了 coolcorp.io/username 之类的 url 来提供用户信息访问页面。(此时变成 coolcorp.io/robots.txt,可能无法正常工作)
  • 不要自己手动拼装 JSON 字符串,不管这个对象有多么小。请使用你所用的语言相应的库或者框架来编写
  • 过滤 那些有点像 URL 的输入,防止 SSRF 攻击
  • 在输出显示给用户之前,过滤输出信息
操作
  • 如果你的业务很小或者你缺乏经验,可以评估一下使用 AWS 或者一个 PaaS 平台来运行代码
  • 在云上使用正规的脚本创建虚拟机
  • 检查所有机器没有必要开放的端口
  • 检查数据库是否没有设置密码或者使用默认密码,特别是 MongoDB 和 Redis
  • 使用 SSH 登录你的机器,不要使用密码,而是通过 SSH key 验证来登录
  • 及时更新系统,防止出现 0day 漏洞,比如 Heartbleed、Shellshock 等
  • 修改服务器配置,HTTPS 使用 TLS1.2,禁用其他的模式。(值得这么做)
  • 不要在线上开启 DEBUG 模式,有些框架,DEBUG 模式会开启很多权限以及后门,或者是暴露一些敏感数据到错误栈信息里面
  • 对坏人和 DDOS 攻击要有所准备,使用那些提供 DDOS 清洗的主机服务
  • 监控你的系统,同时记录到日志里面 (例如使用 New Relic 或者其他 ).
  • 如果是 2B 的业务,坚持顺从需求。如果使用 AWS S3,可以考虑使用 数据加密 功能. 如果使用 AWS EC2,考虑使用磁盘加密功能(现在系统启动盘也能加密了)
关于人
  • 开一个邮件组(例如:security@coolcorp.io)和搜集页面,方便安全研究人员提交漏洞
  • 取决于你的业务,限制用户数据库的访问
  • 对报告 bug、漏洞的人有礼貌
  • 把你的代码给那些有安全编码观念的同伴进行 review (More eyes)
  • 被黑或者数据泄露时,检查数据访问前的日志,通知用户更改密码。你可能需要外部的机构来帮助审计
  • 使用 Netflix Scumblr 及时了解你的组织(公司)在社交网络或者搜索引擎上的一些讨论信息,比如黑客攻击、漏洞等等
### 回答1: 安全设计checklist是指在进行产品或系统设计时,按照一系列标准和规范,对设计方案进行全面的安全性检查和评估。这样可以确保产品或系统在运行过程中不被攻击或利用漏洞,从而保护用户信息安全和隐私。 安全设计checklist主要包括以下几个方面: 1.身份认证和授权:系统应该能够对用户身份进行可靠认证和授权,确保只有经过授权的用户才能访问系统资源。 2.安全性边界:确定系统内外界限和访问权限,避免不受控的访问和流量。 3.攻击防范和应急处置:系统必须具备多层防御机制,能够快速检测和响应各种攻击行为,及时采取应急措施并通知相关人员。 4.数据保护和加密:对重要数据进行严格的保护和加密,避免数据泄露和篡改。 5.设计文档:设计文档必须详细记录系统安全性能和措施,以便后期检查和维护。 6.稳定性和可靠性:系统的稳定性和可靠性必须得到充分考虑,确保系统能够持续稳定运行,并及时处理异常情况。 总之,安全设计checklist是保证系统安全的一个基础步骤,正确执行可以在源上避免安全隐患。同时,一个安全系统也能够提高用户的信任度和用户体验。 ### 回答2: 安全设计checklist是一个用于评估建筑、系统或设备安全性能的清单,通过它可以帮助检查员确定已经完成的工作或预测即将要面临的安全问题。 安全设计checklist包含以下几个方面: 1.物理安全: 这个方面主要考虑的是建筑平面图,门窗安全和建筑安全检查,它能帮助确保建筑物内部环境的安全,并防止可能的袭击和入侵。 2.人员安全: 人员安全主要涵盖物品借用、保密性和权限等问题,它能够确保只有被授权的人可以访问数据和设备。 3.设备安全: 设备安全主要考虑设备的位置、固定,安装、维护、使用和储存等安全问题,来确保工作设备足够安全。 4.数据安全数据安全通常包括数据加密技术和备份实践等,它可以保护机密信息免于未授权访问和意外数据丢失。 5.防火设施: 防火设施涉及灭火设备的使用和备份计划等因素,它可以帮助预防火灾事故,减少火灾的破坏性。 6.维护计划: 维护计划包括了检查、清洁和更新设备和系统的周期性计划,它有助于保持设备和系统的健康运转。 7.培训和意识: 这方面主要涉及操作人员的培训工作和培养员工的安全意识,它可以帮助减少因人为操作带来的安全威胁。 在进行安全设计checklist时,需要了解不同类型的设备,建筑物和系统,以便提供一份适合的检查清单。只有当所有安全基础措施都得到满足,才能确保建筑物,设备和系统安全,并保障人员和数据安全性和防火安全
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

webfker from 0 to 1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值