常见的互联网网站攻击防御方式

  • 1.xss跨站脚本攻击
  • 2.未授权访问
  • 3.登录处明文传输
  • 4.文件上传漏洞
  • 5.跨站伪造请求
  • 6.不安全的链接
  • 7.典型漏洞介绍
    • 7.1XSS跨站脚本攻击
    • 7.2SQL INJECTION数据库注入攻击

1.xss跨站脚本攻击

 1)输入验证:某个数据被接受为可被显示或存储之前,使用标准输入验证机制,验证所有输入数据的长度、类型、语法以及业务规则。2)强壮的输出编码:数据输出前,确保用户提交的数据已被正确进行entity 编码,建议对所有字符进行编码而不仅局限于某个子集。3)明确指定输出的编码方式(如 ISO 8859-1 或 UTF 8):不要允许攻击者为你的用户选择编码方式。4)注意黑名单验证方式的局限性:仅仅查找或替换一些字符(如"<" ">"或类似"script"的关键字),很容易被 XSS 变种攻击绕过验证机制。5)警惕规范化错误:验证输入之前,必须进行解码及规范化以符合应用程序当前的内部表示方法。请确定应用程序对同一输入不做两次解码。

2.未授权访问

    1) 做好对用户与所拥有权限的验证2) 所有访问系统的请求,首先验证是否是合法有效用户。如不是则跳转到登录页面。3) 严格验证用户 session 是否有效,如果无效从后台跳转到登录页面。4) 重要数据操作功能要使用 token。

3.登录处明文传输

   使用 SSL 方式加密或发送重要信息前对信息加密申请证书  https  方式访问。

4.文件上传漏洞

   上传时,检查上传文件的文件头,非授权文件类型的文件,禁止上传。如:建一个txt文件,改为test.jpg,即可上传,这些上传方式是不允许的。
// 文件后缀名String fileName=file.getOriginalFilename();String fileNamefix= fileName.substring(fileName.lastIndexOf(".") + 1);if(!"png".equals(fileNamefix) && !"jpg".equals(fileNamefix) && !"gif".equals(fileNamefix) && !"bmp".equals(fileNamefix)){throw new RczpException("请上传正确的.jpg、.png、.gif、.bmp格式的图片");}String mineType=mineType(file);//文件后缀不是.jpg;.png;.bmp;.gifif(!"image/jpeg".equals(mineType)&&!"image/png".equals(mineType)&&!"image/x-ms-bmp".equals(mineType)&&!"image/gif".equals(mineType)){throw new RczpException("请上传正确的.jpg、.png、.bmp、.gif格式的图片");}//文件大小大于1MBif(file.getSize()>(1024*1000)){throw new RczpException("文件不能超过1.00MB");}

import org.springframework.web.multipart;
import eu.medsea.mimeutil;
private String mineType(MultipartFile f) {String mineType="";MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector");try {mineType=MimeUtil.getMimeTypes(f.getBytes()).toString();} catch (IOException e) {e.printStackTrace();mineType="";}return mineType;}

5.跨站伪造请求

 1、禁止目录递归,如过滤 ../ 或 ../../ 。2. 判断请求来源
public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws ServletException, IOException {  HttpServletRequest request = (HttpServletRequest) req;  HttpServletResponse response = (HttpServletResponse) res;  // 链接来源地址  String referer = request.getHeader("referer");  String RequestURL = request.getRequestURI();if(!RequestURL.equals("/wcm/app/login.jsp")){if(referer == null){/** * 如果 链接地址来自其他网站,则返回错误页面 */  request.getRequestDispatcher("/WEB-INF/error.html").forward(request, response);  }else{if (!referer.contains(request.getServerName())) {  /** * 如果 链接地址来自其他网站,则返回错误页面 */  System.out.println("伪来源地址");request.getRequestDispatcher("/WEB-INF/error.html").forward(request, response);  } else {   chain.doFilter(request, response);  } }}else{chain.doFilter(request, response);  }}

6.不安全的链接

添加rel="noopener noreferrer nofollow"
<a href="https://test.com" target="_blank" rel="noopener noreferrer nofollow">test</a>

7.典型漏洞介绍

7.1XSS跨站脚本攻击

 漏洞成因是因为WEB程序没有对用户提交的变量中的HTML代码进行过滤或转换。漏洞形式这里所说的形式,实际上是指WEB输入的形式,主要分为两种:1.显示输入2.隐式输入其中显示输入明确要求用户输入数据,而隐式输入则本来并不要求用户输入数据,但是用户却可以通过输入数据来进行干涉。显示输入又可以分为两种:1.输入完成立刻输出结果2.输入完成先存储在文本文件或数据库中,然后再输出结果注意:后者可能会让你的网站面目全非!而隐式输入除了一些正常的情况外,还可以利用服务器或WEB程序处理错误信息的方式来实施。漏洞危害比较典型的危害包括但不限于:获取其他用户Cookie中的敏感数据屏蔽页面特定信息伪造页面信息拒绝服务攻击突破外网内网不同安全设置与其它漏洞结合,修改系统设置,查看系统文件,执行系统命令等其它一般来说,上面的危害还经常伴随着页面变形的情况。而所谓跨站脚本执行漏洞,也就是通过别人的网站达到攻击的效果,也就是说,这种攻击能在一定程度上隐藏身份。

7.2SQL INJECTION数据库注入攻击

 SQL Injection定义所谓SQL Injection ,就是通过向有SQL查询的WEB程序提交一个精心构造的请求,从而突破了最初的SQL查询限制,实现了未授权的访问或存取。SQL Injection原理随着WEB应用的复杂化,多数WEB应用都使用数据库作为后台,WEB程序接受用户参数作为查询条件,即用户可以在某种程度上控制查询的结果,如果WEB程序对用户输入过滤的比较少,那么入侵者就可能提交一些特殊的参数,而这些参数可以使该查询语句按照自己的意图来运行,这往往是一些未授权的操作,这样只要组合后的查询语句在语法上没有错误,那么就会被执行。SQL Injection危害SQL Injection的危害主要包括:1.露敏感信息2.提升WEB应用程序权限3.操作任意文件4.执行任意命令SQL Injection 技巧利用SQL Injection的攻击技巧主要有如下几种:1.逻辑组合法:通过组合多种逻辑查询语句,获得所需要的查询结果。2.错误信息法:通过精心构造某些查询语句,使数据库运行出错,错误信息中包含了敏感信息。3.有限穷举法:通过精心构造查询语句,可以快速穷举出数据库中的任意信息。4.移花接木法:利用数据库已有资源,结合其特性立刻获得所需信息。

常见的Web网站防御攻击方法相关推荐

  1. 常见的web网络攻击及解决方法

    XSS攻击 指的是跨站脚本攻击,指的是插入一段JS,用户浏览页面时,它会自动执行实行攻击.攻击者在网页中嵌套,恶意脚本程序,当用户打开网页时,程序开始在浏览器上启动,盗取用户的cooks,从而盗取密码 ...

  2. 10种常见网站安全攻击手段及防御方法

    在某种程度上,互联网上的每个网站都容易遭受安全攻击.从人为失误到网络罪犯团伙发起的复杂攻击均在威胁范围之内. 网络攻击者最主要的动机是求财.无论你运营的是电子商务项目还是简单的小型商业网站,潜在攻击的 ...

  3. 基于nginx配置的WordPress网站防御17ce等测速网站攻击指南

    本文原文:基于宝塔面板nginx配置的WordPress网站防御攻击指南-奇它博客 免插件实现WordPress网站屏蔽后台搜索词广告 WordPress网站批量更换文章固定链接(百度收录自动301跳 ...

  4. 十大Web网站漏洞扫描工具

    1. Nikto 这是一个开源的Web服务器扫描程序,它可以对Web服务器的多种项目(包括3500个潜在的危险文件/CGI,以及超过900个服务器版本,还有250 多个服务器上的版本特定问题)进行全面 ...

  5. 新建Web网站与新建Web应用程序的区别

    为什么80%的码农都做不了架构师?>>>    在Visual Studio 2010中,除了可以使用创建Web应用程序的方式来构建自己的Web项目之外,还可以通过创建Web网站的方 ...

  6. VS2010新建Web网站与新建Web应用程序的区别

    在Visual Studio 2010中,除了可以使用"创建Web应用程序"的方式来构建自己的Web项目之外,还可以通过创建"Web网站"的方式来构建Web项 ...

  7. 【转】VS2010新建Web网站与新建Web应用程序的区别

    在Visual Studio 2010中,除了可以使用"创建Web应用程序"的方式来构建自己的Web项目之外,还可以通过创建"Web网站"的方式来构建Web项 ...

  8. [zz]ASP.net中新建Web网站与新建Web应用程序的区别

    http://www.cnblogs.com/lengjunming/archive/2011/02/15/1955504.html http://book.51cto.com/art/201010/ ...

  9. WEB网站常见受攻击方式及解决办法

    一个网站建立以后,如果不注意安全方面的问题,很容易被人攻击,下面就讨论一下几种漏洞情况和防止攻击的办法. 一.SQL注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的 ...

最新文章

  1. PERL 语言中的q,qw,qr,qx,qq......符号用法总结
  2. android 的listview 3大优化策略
  3. ORACLE PERFORMANCE TUNING 原厂培训.笔记1
  4. AUTOMAKE\AUTOCONF
  5. 使用ASP.NET Core 3.x 构建 RESTful API - 4.3 HTTP 方法的安全性和幂等性
  6. 为什么企业需要采用混合云战略?
  7. 17pk扎金花基于层次的技术
  8. SAP B1 9.1 生产收货数量加已完成数量不能大于计划数量(存储过程控制代码)...
  9. Scratch3.0安装教程
  10. EDA技术与应用课笔记
  11. python实现——WORD转PDF(全自动化,支持doc、docx)
  12. 训练集和验证集的划分
  13. 上传图片到腾讯云(海外服务器)com.qcloud5.5.4版本
  14. Unity 制作360全景视频 全景图片流程
  15. ORA-12154 另一种解决方式,IIS发布后出现的---解决思路---终极方案
  16. 卐 4-3D图形的数学
  17. 计算机课word反思,教学反思Word文档
  18. linux双机连通找不到con1,Linux服务器崩溃 - 错误在反序列化(节点$ CON):错误的连接...
  19. 将网站封装成APP安卓应用
  20. sdk matlab,MATLAB Compiler SDK

热门文章

  1. 文件读写操作:把文件a.txt中的内容复制到文件b.txt中
  2. 计算机应用基础试题及答案电大百度云,电大《计算机应用基础》试题及参考答案...
  3. KDJ 技术指标实战技巧
  4. c语言程序代码中的间隔,printf()函数输出后 默认的间隔是多少
  5. SqlServer查看锁表与解锁
  6. 计算机二级网上报名中北大学,2018年中北大学英语六级考试报名通知
  7. 构筑立体世界,AR Engine助力B站会员购打造沉浸式营销
  8. PWN passcode [pwnable.kr]CTF writeup题解系列5
  9. js判断对象中每一项属性都不为空 非空检测
  10. 打造微信小程序伪状态管理器