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. Could not download lint-gradle.jar (com.android.tools.lint:lint-gradle:26.4.
  2. Oracle DMP 操作笔记之根据DMP逆向推导出导出的表空间名称
  3. 技术转管理的成功率不到70%!你必须先迈过这9道坎...10页PPT详解
  4. Vue + Element UI 实现权限管理系统 前端篇(七):功能组件封装
  5. 天合公司 TRW Inc.
  6. [IE编程相关]之一:客户端键盘响应事件分析
  7. [蓝桥杯][算法提高VIP]学霸的迷宫(bfs+dfs)
  8. PASTE Splay
  9. 自动化遍历-appcrawler
  10. 工业基础类IFC—EXPRESS语言
  11. mysql sql优化的几种方法_sql优化常用的几种方法,19种最有效的sql优化技巧
  12. 力扣 69. x 的平方根 三种方法
  13. 小打卡软件测试,考勤打卡软件大测评,这款打卡软件你有在用吗?
  14. Android 11.0 12.0修改搜狗为默认输入法,并且授予运行权限
  15. 除了支付宝,微信也能查询账单了!再也不担心钱花哪去了!
  16. 《C语言程序设计》江宝钏主编-习题3-6-商和余
  17. GitHub入门:github查看项目的历史版本,并实现版本的回滚(网页版)
  18. 树莓派4B命令行安装网易云音乐播放在线歌曲
  19. 设计模式之中介者模式---Mediator Pattern
  20. 数据通信与计算机网络课后习题

热门文章

  1. 怎么用 Ai 或 Ps 做一个简单,大方而不土的七夕海报设计?
  2. TP5框架初步认识微信公众号
  3. 美团页面输出,但却爆出403错误
  4. java ps h264_从海康28181的PS流解析H264的补充
  5. Ubuntu9.04--qt4.5透明效果
  6. 性价比最高的云服务器购买方式
  7. Sweet Alert Dialog:清新文艺,快意灵动的甜心弹框
  8. CDN对于动态加速是否有效
  9. ubuntu18.04 设置桥接模式
  10. 不懂电脑出现的误解,你中招了没?