想要开发出一个安全的、健壮的Web应用其实是非常困难的, 如果你想要快速开发出一款集使用价值、用户体验度、以及安全性为一身的产品,以下安全步骤很必要!!!
 
 
数据库

  1.对类似访问令牌、电子邮箱地址或账单详情进行加密处理,尤其是用户的身份识别信息(密码)。

  2.如果你的数据库支持低成本加密,请确保开启这项功能并保护主机磁盘中的数据。与此同时,确保所有的备份文件都进行了加密存储。

  3.按照最小权限原则给数据库访问账号分配权限,不要使用数据库的root账号。

  4.使用密钥存储器来保存或派发密钥,不要直接将密钥硬编码在你的应用之中。

  5.通过使用SQL预处理语句来避免SQL注入攻击。比如说,如果你使用的是NPM,那么请不要使用npm-mysql,你应该用的是npm-mysql2,因为它支持SQL预处理语句。

 
开发

  1.确保你软件中所有组件的每一个版本都进行了漏洞扫描,包括接口、协议、代码以及数据包。

  2.对产品中所有使用到的第三方工具时刻保持警惕性,选择一款安全系数较高的开发平台。

 
身份验证

  1.使用合适的加密算法(例如bcrypt)来计算并存储密码哈希,在初始加密时选择合适的随机数据,还有就是千万不要自己去写一个加密算法。

  2.使用简单但健壮的密码规则,以鼓励用户设置长度足够安全的随机密码。

  3.在服务的登录机制中引入多因素身份验证功能。

 
DoS保护
  1.确保那些针对API的DoS攻击不会严重影响你网站的正常运行,至少要限制API的请求访问速率。 
  2.对用户所提交的数据和请求进行结构和大小的限制。 
  3.使用类似CloudFlare这样的缓存代理服务来为你的Web应用添加DDoS缓解方案。
 
Web流量

  1.使用TLS,不只是你的登录表单和网站响应数据,而是你的整个网站都应该使用TLS。

  2.Cookie必须为httpOnly。

  3.使用CSP(内容安全策略),虽然配置过程比较麻烦,但这觉得是值得的。

  4.在客户端响应中使用X-Frame-Option和X-XSS-Protection头。

  5.使用HSTS响应,使用HTTPS。 6.在所有的表单中使用CSRF令牌。

API篇

  1.确保你所有的公共API中没有可以枚举的资源。

  2.确保用户在使用你的API之前,对他们的身份进行验证。

 
验证

  1.在客户端对用户的输入进行验证,并即使给予反馈(Ajax),但永远不要相信用户输入的数据。

  2.在服务器端再对用户所输入的每一个字符进行一次彻底的验证,永远不要直接将用户输入的内容注入到响应数据中,永远不要直接在SQL语句中插入用户提供的数据。

 
云端配置

  1.确保所有的服务只开启必要的端口,关闭不用的端口,并对常用端口进行强制性的安全保护,因为通过非标准端口来进行攻击对于攻击者而言相对来说是比较困难的。

  2.确保服务器后台数据库和后台服务无法通过公网查看到。

  3.在单独的VPC节点配置逻辑服务或提供服务内通信。

  4.确保所有的服务只接受来自有限IP地址的数据。

  5.限制输出数据的IP地址以及端口。

  6.使用AWS IAM角色,不要使用root凭证。

  7.对所有的管理员和开发人员提供最小的访问权限。

  8.定期更换密码和访问密钥。

 
基础设施

  1.确保可以在主机不下线的情况下进行更新操作,确保部署了全自动化的软件更新策略。

  2.使用类似Terraform这样的工具来创建所有的基础设施,不要使用云端console(控制台)来进行创建。

    3.对所有服务的日志进行集中记录,不要通过SSH来访问或获取日志。

  4.不要让AWS服务组的端口22保持开启状态。

  5.一定要部署入侵检测系统。

 
操作

  1.关闭不用的服务和服务器,因为最安全的服务器是那些关闭着的服务器。

 
测试

  1.开发完成之后,对你的设计和代码实现进行多次安全审查。

  2.进行渗透测试,也就是自己黑自己,但你也要让别人来对你的网站进行渗透测试。

 
计划
  1.创建一个安全威胁模型,用来描述你可能会遇到的威胁以及攻击者。 
  2.设计一个安全应急响应方案,你总有一天会用到的。

Web开发安全小贴士的更多相关文章

  1. Web开发的小知识点

    ServletConfig:用于读取配置文件信息 ServletContext:这是一个容器,代表一个web应用程序,多个Servlet可以通过这个容器共享数据信息(注意:这样的数据共享有线程安全问题 ...

  2. Java Web开发 之小张老师总结中文乱码解决方案

    中文乱码:在以后学习过程中全部采用UTF-8 1.文件的乱码 1.1.项目文本文件默认编码:        [右击项目]->[Properties]->[Resource]->[Te ...

  3. OOP,WEB开发实用小技巧

    偶然读到一篇博客,记录一下心得.这种设计对于新手来说一般是想不到的,它充分的发挥了OOP语言的特性,让代码专用而清爽.这是不是重构的思想呢? 我们在写业务层的时候,有很多方法是重复功能的,我们就可以使 ...

  4. Java Web开发 之小张老师总结GET和POST区别

    get和post区别1.传输方式不同,get在request-line中传输(即在URL中传输).post在request-line及 request-body中传输(可认为隐藏传输)2.get传输长 ...

  5. Java Web开发 之小张老师总结EL、JSP、Servlet变量

    EL 11 JSP 9 Servlet JSP类别 pageContext pageContext * 作用域 pageScope pageContext.getAttribute() * reque ...

  6. SharePoint每日小贴士Web部件

    SharePoint每日小贴士Web部件 项目描写叙述         此Web部件从指定SP自己定义列表或一个选定的 RSS源选择一个随机项目.并显示一张图片.标题和一个Tip.         适 ...

  7. (转)Web开发中最致命的小错误

    Web开发中最致命的小错误 现在,有越来越多所谓的“教程”来帮助我们提高网站的易用性.本文收集了一些在 Web 开发中容易出错和被忽略的小问题,并且提供了参考的解决方案,以便于帮助 Web 开发者更好 ...

  8. 移动Web开发小技巧

    移动Web开发小技巧 添加到主屏后的标题(IOS) name="apple-mobile-web-app-title" content="标题"> 启用  ...

  9. Python做web开发,推荐几个能立马上手的小项目

    Python这门优美的语言是非常适合web开发的,基于Python的Django框架简单便捷且很强大. 那么作为新手该如何上手这门语言?一切不敲代码的学编程手段都是扯淡,今天就推荐一些适合新手练手的P ...

随机推荐

  1. 第一个SignalR案例

    说明:开发的案例为Hub(集线器) 一.开发环境 VS2013  ,window10 二.步骤 打开vs创建一个新的解决方案,添加一个空的WebForm项目. 使用NuGet添加引用.命令:PM> ...

  2. ENetwork Basic Configuration PT Practice SBA

    CCNA Exploration: 网络基础知识 (版本 4.0) A few things to keep in mind while completing this activity: 1 Do  ...

  3. html 选择器之基础选择器

    我把CSS选择器分开成三部分,第一部分是我们常用的部分,我把他叫做基本选择器:第二部分我把他称作是属性选择器,第三部分我把他称作伪类选择器 一.基础选择器 1. 通配符(*):选中所有的元素 2.元素 ...

  4. Maven(二)之Maven项目构建演练

    从上一篇的讲解中我们知道了什么是Maven,然后它的安装配置,到修改本地仓库,这篇我们用一个实际的例子,带领大家走进我们的Maven之旅.让我们一起来体验一下Maven的高度自动化构建项目的过程. 一 ...

  5. clamav 杀毒软件安装及使用配置

    安装clamav 之前还需要安装zlib 要不然安装过程中会报错的. tar -zxvf  zlib-1.2.3.tar.gz cd zlib-1.2.3 ./configure make make ...

  6. CF #311 D. Vitaly and Cycle 加最少边形成奇圈

    题目链接:http://codeforces.com/problemset/problem/557/D 大意 给出一个未必联通的无向图(点数至少为3),问最少加多少边可以形成一个奇圈,以及这样做的方案 ...

  7. Android性能优化——之防止内存泄露

    又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题. 最近进行技术支持的时候,遇到了几个崩溃的问题,都是OOM异常,一般OOM异常给人的感觉应该是加载大图片造成的 ...

  8. bzoj4652 [Noi2016]循环之美

    Description 牛牛是一个热爱算法设计的高中生.在他设计的算法中,常常会使用带小数的数进行计算.牛牛认为,如果在k进制下,一个数的小数部分是纯循环的,那么它就是美的.现在,牛牛想知道:对于已知 ...

  9. yum安装网络配置图形界面

    实战:为了方便使用网络配置我们安装插件tui 操作如下: [root@localhost ~]# yum install NetworkManager-tui已加载插件:fastestmirror, ...

  10. oracle linux 6.5 安装 oracle 12cR2数据库(2)-DBCA建库

    援引:http://www.cnblogs.com/kerrycode/p/3386917.html  by 潇湘隐者 Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引 ...