web安全,大公司往往有专门的安全开发流程去保证,有专门的安全团队去维护,而对于中小网络公司,本身体量小,开发同时兼带运维工作,时间精力有限,但是,同样需要做一些力所能及的必要的事情。有时候,安全威胁并不是因为你的防盗窗被人撬开了,而是你晚上睡觉的时候忘了关门,而关上门对开发来说也许只是举手之劳。

1、不要用root,确定使用的中间件和框架是否默认打开了后门

我们总会在线上使用部署一些中间件、开源框架、开源服务。线上部署的时候,不要偷懒直接用root账号,要遵循最小权限原则,创建一个新的账号,并给这个账号指定权限,部署运行相关服务,这并非多此一举。

假设黑客实施sql注入攻击,而你的web服务是通过root账号连接数据库的,那么受影响的可能就不单单是数据库,而是整个系统。如在mysql中,管理员账号可以通过LOAD_FILE读取系统文件,通过INTO DUMPFILE写入本地文件,通过sys_eval()和sys_exec()执行系统命令。

另外,对于新的中间件,框架,要仔细排查它可能会留下的坑,特别是一些管理功能,能关闭就关闭。

比如常用的tomcat,它有一个tomcat manager后台,可以通过它部署war包,虽然有密码认证,但很可能会被人设置为一个简单的默认密码,也很有可能被攻击者通过暴力破解的方式获取后台访问权限。

如常用的服务发现模块consul,如果没有配置好权限,可以通过http://ip:8500/ui/ 直接访问配置信息。

更常用的框架Spring Boot,它有一个监视和管理应用程序的组件Actuator,使用非常简单,只要在pom.xml文件加入下面一段即可:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>

但Actuator端点发布的许多信息默认都会被外网访问到,如/env,如/health等等,甚至/shutdown也会不小心被开启。

总之一句话,不要用root,确定使用的中间件和框架是否默认打开了后门。

2、日常工作中的数据安全的保障

业务后台权限分配好,遵循最小权限原则,让相关人员接触到工作所需的数据即可。

密码、敏感数据存入数据库前一定要加密,建议使用带salt的SHA-256或SHA-512用于Hashing,加密的话不要使用ECB模式。这是数据防止关键数据泄漏的最后一道防线了。

平时一些临时性敏感数据和文件的传输尽量使用U盘,起码也要是可靠的企业通讯软件。qq,微信尽量少用。

3、防范常见的攻击

网上有许多的坏人,就算是一个刚起步的小网站,也会被攻击者瞄上。

垃圾注册:

比如曾有有一次,用户注册量猛涨,一开始很开心,以为是推广给力,后来一查,原来都是些垃圾注册,垃圾注册的目的主要是为了发广告,或者获取积分,提高等级。但用户刚进来,就调用了一些第三方的收费服务,这导致这一天白白损失了一笔钱,而这些垃圾用户并不能给我们带来任何价值。我们的方法是调整流程顺序,把收费服务放到后面,在一开始的认证中就把垃圾用户拦截掉。

XSS(跨站脚本攻击):

一个简单的例子就是黑客在评论区提交了一段js代码,而这段代码没有过滤就作为正常内容保存在数据库中,然后用户访问时作为正常留言在浏览器渲染展示,这时候这段js脚本就会执行,干各种坏事,如盗取账号,窃取Cookie等等。对此,简单快捷的方法是对用户的输入作XSS filter,但XSS是在变量拼接到html时产生,周密一点的思路是根据输出变量的语境,区别处理。

CSRF(跨站请求伪造):

仍举一个简单的例子,比如有银行网站A,它以GET请求来完成银行转账的操作,如:http://www.ibank.com/transfer?to=55&money=1000 ,你登陆了网站A,在不登出的情况下,又访问了危险网站B,而B页面中有如下内容:

<img src=“http://www.ibank.com/transfer?to=77&money=1000”>

这时候你会发现自己账户上少了1000元,有人说改成post请求就可以解决这个问题了,但的确在一定程度上增加了攻击的复杂性,但黑客还是可以构造表单,暗地里发送post请求实现攻击。CSRF攻击能够成功的关键是重要操作的所有参数都可以被攻击者猜到,解决的方法是传送一个随机的Token,验证传送的Token与Session中的Token是否一致。

SQL注入:

这个大家很熟悉,网上也有很多这方面的资料,防范这一攻击,和XSS有点类似,最重要的是遵循数据与代码相分离的原则,不要把用户的输入当作代码执行了。使用预编译语句,绑定变量。在java中,就是使用PrepareStatement。目前,mybatis框架就启用了预编译功能,但需要注意的是,在MyBatis中,涉及动态表名和列名时,我们会使用“${xxx}”格式的参数,但它会直接参与SQL编译,不能避免注入攻击。所以,这样的参数需要我们在代码中手工进行处理来防止注入。平时尽量采用采用“#{xxx}”格式。

文件上传漏洞:

很多网站都有文件上传功能,但攻击者可能会上传一些脚本语言,病毒文件等等,我们最起码需要在执行上传时判断文件类型,将上传文件的目录设置为不可执行。

DDOS攻击:

有时候发现某个接口会频繁会被攻击者自动调用,从而耗费我们有限的资源,而对方用的是代理IP,我们无法准确判断哪个IP是属于攻击者的。对于简单的攻击,我们还是可以通过一些方法来防范,比如限制每个IP的请求频率,比如使用验证码。请求频率的限制,可以通过在 web server(nginx,apatche)上作配置来实现。

附:使用jwt时如何保证安全

有不少公司在web应用中使用JWT替代session,出于安全考虑,有如下建议:

  • token放web存储(本地/session存储),JavaScript可以访问同一个域上的Web存储。这意味着你的JWT可能容易受到XSS(跨站脚本)攻击。恶意JavaScript嵌入在页面上,以读取和破坏Web存储的内容。

  • 若token放在cookie,设置cookie的http-only,浏览器无法操作cookie,防止xss,但cookie很容易受到CSRF攻击,不管是否使用jwt,都要防范此类攻击,办法之一是请求令牌token。这一方案相对比较安全。

  • 使用HTTPS / SSL确保你的Cookie和JWT在客户端和服务器传输期间默认加密。这有助于避免中间人攻击!

web安全简易规范就这些,有什么需要补充的欢迎留言。如果攻击者真正瞄上你,要搞你了,单单开发的力量是难以分身应对的,需要专门的团队去处理,我们开发要做的是,了解一些基本的安全常识,遵循一些基本的安全开发规范,杜绝一切看起来很小白的错误!

更多精彩:

java达人

ID:drjava

(长按或扫码识别)

web安全简易规范123相关推荐

  1. HTML编码规范 - (WEB前端命名规范)

    HTML编码规范 1 (一)命名规则: 2 3 头:header 4 内容:content/container 5 尾:footer 6 导航:nav 7 侧栏:sidebar 8 栏目:column ...

  2. 前端传中文文件名_前端工程师需要掌握哪些知识,web前端开发规范总结

    Web前端作为开发团队中不可或缺的一部分,需要按照相关规定进行合理编写(一部分不良习惯可能给自己和他人造成不必要的麻烦).不同公司不同团队具有不同的规范和文档.下面是根据不同企业和团队的要求进行全面详 ...

  3. Web 前端开发规范手册

    Web 前端开发规范手册 一.规范目的 1.1 概述 二.文件规范 2.1 文件命名规则 2.2 文件存放位置规范 2.3 CSS 书写规范 基本原则: 注意细则: 命名规则: id的命名: 基本样式 ...

  4. Web前端开发规范文档(更新于2013-01-13)

    规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进行前台页面开发. 本文档如有不对或者不 ...

  5. Web UI 制作规范

    一. Web 目录结构规范: 目录建立的原则:以最少的层次提供最清晰简便的访问结构. 目录的命名以小写英文字母,下划线组成. 根目录一般只存放index.htm以及其他必须的系统文件 根目录下的p_w ...

  6. Java Web 项目目录规范

    一.项目结构 这里和其他项目区别不大,我将模板抽离出来,更容易分析和理解: 解释一下:js主要包括extends(引入第三方的js).module(项目模块自己的js).lib(引用包,这里也可以继续 ...

  7. (16)WEB前端开发规范之HTML规范

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

  8. 智慧零售erp通用版管理系统+门店管理+商品管理+厂商管理+财务管理+销售管理+仓储管理+Axure高保真交互ERP通用版零售行业web端简易版管理系统

    作品介绍:智慧零售erp通用版管理系统+门店管理+商品管理+厂商管理+财务管理+销售管理+仓储管理+Axure高保真交互ERP通用版零售行业web端简易版管理系统 原型交互及下载请点击:https:/ ...

  9. Web地图服务规范(WMS、WMTS、TMS)简析

    Web地图服务规范(WMS.WMTS.TMS) 1.概况 Web地图服务规范包括WMS(网络地图服务).WMTS(网络地图瓦片服务).TMS(瓦片地图服务)等.WMTS服务和WMS服务都是由开发地理信 ...

最新文章

  1. 代码的印象派:写点好代码吧
  2. Maven详解之聚合与继承
  3. docker (centOS 7) 使用笔记4 - etcd服务
  4. STM32F103实现点灯(固件库方式)
  5. 中国的这些民居都是你没见过的!
  6. 需求分析的图形工具(层次方框 warnier IPO)
  7. 面试题系列-mysql连环13问
  8. ajax简单校验用户名是否存在
  9. NetBeans Weekly News: #125-Nov 17,2010
  10. 【路径规划】基于matlab人工蜂群优化粒子群算法求解最短路径规划问题【含Matlab源码 124期】
  11. 明翰英语教学系列之PTE与多邻国篇V1.1
  12. Open Drain vs Push Pull
  13. 图像处理中像素和毫米的换算
  14. Sharepreferences
  15. NLP之PTM:自然语言处理领域—预训练大模型时代的各种吊炸天大模型算法概述(Word2Vec→ELMO→Attention→Transfo→GPT系列/BERT系列等)、关系梳理、模型对比之详细攻略
  16. 酒店评论数据分析和挖掘-展现数据分析全流程(一)报告展示篇
  17. python有哪些细节描写_什么是细节描写?它又包括哪些方面?
  18. anaconda 代码提示,Anaconda安装OpenCV没有自动代码补全
  19. 小米上市,工号1000以内千万富翁,100以内亿万富翁
  20. 手把手Selenium安装使用及实战爬取前程无忧招聘网站(一)

热门文章

  1. Linux服务器设置ssh私钥登录
  2. 如何自定义你的鼠标指针
  3. Python-PyMysql详解
  4. 经典分类算法——SVM算法
  5. 如何下载Oracle Linux以在VirtualBox上安装
  6. Linux设置swap分区
  7. Ubuntu9.04--qt4.5透明效果
  8. postman和post interceptor下载安装for Mac
  9. 【VOLTE】关于VOLTE容量
  10. php explode 效率,PHP字符分割explode,split,preg_split性能比较