文章https://xianzhi.aliyun.com/forum/read/793.html 里面涉及到了web安全验收参考文档:

其实github上老外对此也做过一些整理。详情参考:https://github.com/FallibleInc/security-guide-for-developers/blob/master/security-checklist.md

下面是更新的一个中文版本:https://github.com/FallibleInc/security-guide-for-developers/blob/master/security-checklist-zh.md#安全checklist

安全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 OTP、 Resend 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) 不应该被硬编码

来自第三方的 secret 和 auth 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 及时了解你的组织(公司)在社交网络或者搜索引擎上的一些讨论信息,比如黑客攻击、漏洞等等

WEB安全验收参考文档——From Github的更多相关文章

  1. asp.net core web api 生成 swagger 文档

    asp.net core web api 生成 swagger 文档 Intro 在前后端分离的开发模式下,文档就显得比较重要,哪个接口要传哪些参数,如果一两个接口还好,口头上直接沟通好就可以了,如果 ...

  2. ASP.NET Core 中文文档 第二章 指南 (09) 使用 Swagger 生成 ASP.NET Web API 在线帮助测试文档

    原文:ASP.NET Web API Help Pages using Swagger 作者:Shayne Boyer 翻译:谢炀(kiler) 翻译:许登洋(Seay) 对于开发人员来说,构建一个消 ...

  3. WEB前端开发规范文档(转)

    http://codeguide.bootcss.com/  编写灵活.稳定.高质量的 HTML 和 CSS 代码的规范上面的文档 再结合下面的规范: 无论是从技术角度还是开发视角,对于web前端开发 ...

  4. 网站开发进阶(三十八)Web前端开发规范文档你需要知道的事

    Web前端开发规范文档你需要知道的事 规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进 ...

  5. Web前端开发规范文档你需要知道的事

    Web前端开发规范文档你需要知道的事 规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进 ...

  6. WEB前端开发规范文档[转]

    为新项目写的一份规范文档, 分享给大家. 我想前端开发过程中, 无论是团队开发, 还是单兵做站, 有一份开发文档做规范, 对开发工作都是很有益的. 本文档由本人编写, 部分意见来源于网络, 以此感谢, ...

  7. m_Orchestrate learning system---四、多看参考文档很多事情很轻松就解决了

    m_Orchestrate learning system---四.多看参考文档很多事情很轻松就解决了 一.总结 一句话总结:多看参考文档啊 1.面包屑导航如何实现? 1 <ol class=& ...

  8. Spring Boot 2.2.2.RELEASE 版本中文参考文档【3.1】

    使用Spring Boot 本节将详细介绍如何使用Spring Boot.它涵盖了诸如构建系统,自动配置以及如何运行应用程序之类的主题.我们还将介绍一些Spring Boot最佳实践.尽管Spring ...

  9. Spring Boot 2.2.2.RELEASE 版本中文参考文档【3.2 - 3.10】

    Spring Boot 2.2.2.RELEASE版本中文文档持续更新中~如有需要获取参考文档文件,关注公众号JavaSo,回复“参考文档”即可. 3.2 结构化代码 Spring Boot不需要任何 ...

随机推荐

  1. [转]C++ error C2011: “XXX”:“class”类型重定义

    http://blog.csdn.net/m_leonwang/article/details/27678219 尝试修复这个程序的错误: 点击下载源代码文件夹

  2. js上传控件 plupload 使用记录

    最近一个项目需要使用一个上传控件进行多图片上传,给用户更好的体验,找到了plupload,用了一下感觉还是不错的, 1.从官网上  可以获得例子 ,我集成到了jsp,如下: <%@ page l ...

  3. 做过的自定义 View

    做过的自定义 View android view custom 音频条状图 需求 详细设计 具体实现 音频条状图 需求 音频图 最终效果类似于音频图中的条状图 只是效果模拟,并不监听真实的音频 条的宽 ...

  4. 解决Linux环境下Tomcat启动卡住问题

    最近发现在服务器上启动tomcat,会存在卡住的情况,这种情况是每次必现,通过搜索发现是随机数生成问题.解决方案如下 将$JAVA_HOME/jre/lib/security/Java.securit ...

  5. TCP编程,Socket通讯

    网络编程分两种,一种是TCP编程,还有一种是UDP编程(点击打开链接).而本文先讲述简单的TCP编程,Socket套接字连接通讯,实现简单的client与server之间的信息传输. 以下是clien ...

  6. Elasticsearch增、删、改、查操作深入详解

    引言: 对于刚接触ES的童鞋,经常搞不明白ES的各个概念的含义.尤其对“索引”二字更是与关系型数据库混淆的不行.本文通过对比关系型数据库,将ES中常见的增.删.改.查操作进行图文呈现.能加深你对ES的 ...

  7. jQuery常用技巧

      1.关于页面元素的引用 通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用 ...

  8. 理解WCF中的Contracts

    WCF中的Contracts WCF通过Contract来说明服务和操作,一般包含五种类型的Contract:ServiceContract,OperationContract,FaultContra ...

  9. 用MathType编辑带点星号的流程

    在数学中,在进行问题描述的同时,可能也会使用到一些文本符号,比如带点星号.这些符号嵌入在公式中,就需要在MathType数学公式编辑器中来编辑,而不是在文档中编辑.而对于公式编辑器来说,编辑一些常用的 ...

  10. 【转】CStdioFile UNICODE编译 英文系统下读取中文汉字乱码解决

    转载出处:http://www.cnblogs.com/ct0421/p/3242418.html 函数原形为:char *setlocale( int category, const char *l ...