Web开发安全小贴士
1.对类似访问令牌、电子邮箱地址或账单详情进行加密处理,尤其是用户的身份识别信息(密码)。
2.如果你的数据库支持低成本加密,请确保开启这项功能并保护主机磁盘中的数据。与此同时,确保所有的备份文件都进行了加密存储。
3.按照最小权限原则给数据库访问账号分配权限,不要使用数据库的root账号。
4.使用密钥存储器来保存或派发密钥,不要直接将密钥硬编码在你的应用之中。
5.通过使用SQL预处理语句来避免SQL注入攻击。比如说,如果你使用的是NPM,那么请不要使用npm-mysql,你应该用的是npm-mysql2,因为它支持SQL预处理语句。
1.确保你软件中所有组件的每一个版本都进行了漏洞扫描,包括接口、协议、代码以及数据包。
2.对产品中所有使用到的第三方工具时刻保持警惕性,选择一款安全系数较高的开发平台。
1.使用合适的加密算法(例如bcrypt)来计算并存储密码哈希,在初始加密时选择合适的随机数据,还有就是千万不要自己去写一个加密算法。
2.使用简单但健壮的密码规则,以鼓励用户设置长度足够安全的随机密码。
3.在服务的登录机制中引入多因素身份验证功能。
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.进行渗透测试,也就是自己黑自己,但你也要让别人来对你的网站进行渗透测试。
Web开发安全小贴士的更多相关文章
- Web开发的小知识点
ServletConfig:用于读取配置文件信息 ServletContext:这是一个容器,代表一个web应用程序,多个Servlet可以通过这个容器共享数据信息(注意:这样的数据共享有线程安全问题 ...
- Java Web开发 之小张老师总结中文乱码解决方案
中文乱码:在以后学习过程中全部采用UTF-8 1.文件的乱码 1.1.项目文本文件默认编码: [右击项目]->[Properties]->[Resource]->[Te ...
- OOP,WEB开发实用小技巧
偶然读到一篇博客,记录一下心得.这种设计对于新手来说一般是想不到的,它充分的发挥了OOP语言的特性,让代码专用而清爽.这是不是重构的思想呢? 我们在写业务层的时候,有很多方法是重复功能的,我们就可以使 ...
- Java Web开发 之小张老师总结GET和POST区别
get和post区别1.传输方式不同,get在request-line中传输(即在URL中传输).post在request-line及 request-body中传输(可认为隐藏传输)2.get传输长 ...
- Java Web开发 之小张老师总结EL、JSP、Servlet变量
EL 11 JSP 9 Servlet JSP类别 pageContext pageContext * 作用域 pageScope pageContext.getAttribute() * reque ...
- SharePoint每日小贴士Web部件
SharePoint每日小贴士Web部件 项目描写叙述 此Web部件从指定SP自己定义列表或一个选定的 RSS源选择一个随机项目.并显示一张图片.标题和一个Tip. 适 ...
- (转)Web开发中最致命的小错误
Web开发中最致命的小错误 现在,有越来越多所谓的“教程”来帮助我们提高网站的易用性.本文收集了一些在 Web 开发中容易出错和被忽略的小问题,并且提供了参考的解决方案,以便于帮助 Web 开发者更好 ...
- 移动Web开发小技巧
移动Web开发小技巧 添加到主屏后的标题(IOS) name="apple-mobile-web-app-title" content="标题"> 启用 ...
- Python做web开发,推荐几个能立马上手的小项目
Python这门优美的语言是非常适合web开发的,基于Python的Django框架简单便捷且很强大. 那么作为新手该如何上手这门语言?一切不敲代码的学编程手段都是扯淡,今天就推荐一些适合新手练手的P ...
随机推荐
- seo从业者发展方向
对于很多朋友来说,seo就是一项比较简单的技能,内容+外链,就可以基本囊括seo的基本内容了.可能很多朋友对此不屑一顾,会说seo可是包含万象, 你需要懂网页设计.标签设计,分词优化.企业建站等等方面 ...
- 空a标签 a标签空的情况下 IE6 IE7下点击无效
最近做了好多网站专题页面,因为专题页面图片较多,个别banner上有1个到多个按钮,一种是用“图解img标签的usemap”的方法做链接,(图解img标签的usemap使用方法)[传送门] 另一种用则 ...
- Ranking Relevance小结
Ranking Relevance是搜索排序算法的各个影响因子中相当重要的一个部分.对于Ranking Relevance的计算,过去的技术往往分为两个大的方向:Click Behavior和Text ...
- SSH整合总结(xml与注解)
本人自己进行的SSH整合,中间遇到不少问题,特此做些总结,仅供参考. 一.使用XML配置: SSH版本 Struts-2.3.31 Spring-4.3.5 Hibernate-4.2.21 引入ja ...
- 【web】之 jquery上传插件的Plupload的使用
首先下载plupload->http://www.plupload.com 因为Plupload可配置参数比较多,所以这里讲解最常用的,结合jquery-ui展示的界面!如下: Plupload ...
- FreeBSD上构架Nginx服务器
这篇文章主要记录作者如何在FreeBSD上构架Nginx服务器.作者采用下载该程序的一个源代码包手动编译的方法,而不是使用包管理工具.这样做有两个原因:首先包质量不能保证,或无效或版本旧:其次需要在编 ...
- Extjs6(一)——用sencha cmd建立一个ExtJs小项目
本文基于ext-6.0.0 一.用sencha cmd建立一个ExtJs小项目 首先,需要一个命令行工具.进入extjs所在目录. 然后,输入:sencha -sdk [ExtJs6.0文件夹地址] ...
- Java 8 lambda初试
λ表达式本质上是一个匿名方法.让我们来看下面这个例子: public int add(int x, int y) { return x + y; } 转成λ表达式后是这个样子: (int x, int ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(十二)数据层优化-explain关键字及慢sql优化
本文提要 从编码角度来优化数据层的话,我首先会去查一下项目中运行的sql语句,定位到瓶颈是否出现在这里,首先去优化sql语句,而慢sql就是其中的主要优化对象,对于慢sql,顾名思义就是花费较多执行时 ...
- 用 Python 编写网络爬虫 笔记
Chapter I 简介 为什么要写爬虫? 每个网站都应该提供 API,然而这是不可能的 即使提供了 API,往往也会限速,不如自己找接口 注意已知条件(robots.txt 和 sitemap.xm ...