• 各种漏洞攻击


    sql注入

    sql注入
    一般用户登录用的SQL语句为:SELECT * FROM user WHERE username='admin' AND password='passwd',此处admin和passwd分别为用户输入的用户名和密码,如果开发者没有对用户输入的用户名和密码做处理,就可以构造万能密码成功绕过登录验证,例如:用户输入'or 1 #,SQL语句将变为:SELECT * FROM user WHERE username=''or 1 #' AND password='',username=''or 1作为条件始终为TRUE,#注释掉后面的内容,所以查询语句可以正确执行。

    xss攻击

    什么是xss攻击?

    XSS 即(Cross Site Scripting)中文名称为:跨站脚本攻击。XSS的重点不在于跨站点,而在于脚本的执行。那么XSS的原理是:
    恶意攻击者在web页面中会插入一些恶意的script代码。当用户浏览该页面的时候,那么嵌入到web页面中script代码会执行,因此会达到恶意攻击用户的目的。那么XSS攻击最主要有如下分类:反射型、存储型、及 DOM-based型。 反射性和DOM-baseed型可以归类为非持久性XSS攻击。存储型可以归类为持久性XSS攻击。

    反射型xss

    反射性XSS的原理是:反射性xss一般指攻击者通过特定的方式来诱惑受害者去访问一个包含恶意代码的URL。当受害者点击恶意链接url的时候,恶意代码会直接在受害者的主机上的浏览器执行。

    反射性XSS又可以叫做非持久性XSS。为什么叫反射型XSS呢?那是因为这种攻击方式的注入代码是从目标服务器通过错误信息,搜索结果等方式反射回来的,而为什么又叫非持久性XSS呢?那是因为这种攻击方式只有一次性。

    比如:攻击者通过电子邮件等方式将包含注入脚本的恶意链接发送给受害者,当受害者点击该链接的时候,注入脚本被传输到目标服务器上,然后服务器将注入脚本 "反射"到受害者的浏览器上,从而浏览器就执行了该脚本。

    因此反射型XSS的攻击步骤如下:

    1. 攻击者在url后面的参数中加入恶意攻击代码。
    2. 当用户打开带有恶意代码的URL的时候,网站服务端将恶意代码从URL中取出,拼接在html中并且返回给浏览器端。
    3. 用户浏览器接收到响应后执行解析,其中的恶意代码也会被执行到。
    4. 攻击者通过恶意代码来窃取到用户数据并发送到攻击者的网站。攻击者会获取到比如cookie等信息,然后使用该信息来冒充合法用户
      的行为,调用目标网站接口执行攻击等操作。

    存储型xss

    存储型XSS的原理是:主要是将恶意代码上传或存储到服务器中,下次只要受害者浏览包含此恶意代码的页面就会执行恶意代码。

    比如我现在做了一个博客网站,然后攻击者在上面发布了一篇文章,内容是如下: 如果我没有对该文章进行任何处理的话,直接存入到数据库中,那么下一次当其他用户访问该文章的时候,服务器会从数据库中读取后然后响应给客户端,那么浏览器就会执行这段脚本,然后攻击者就会获取到用户的cookie,然后会把cookie发送到攻击者的服务器上了。

    因此存储型XSS的攻击步骤如下:

    1. 攻击者将恶意代码提交到目标网站数据库中。
    2. 用户打开目标网站时,网站服务器将恶意代码从数据库中取出,然后拼接到html中返回给浏览器中。
    3. 用户浏览器接收到响应后解析执行,那么其中的恶意代码也会被执行。
    4. 那么恶意代码执行后,就能获取到用户数据,比如上面的cookie等信息,那么把该cookie发送到攻击者网站中,那么攻击者拿到该
      cookie然后会冒充该用户的行为,调用目标网站接口等违法操作。

    如何防范?

    1. 后端需要对提交的数据进行过滤。
    2. 前端也可以做一下处理方式,比如对script标签,将特殊字符替换成HTML编码这些等。

    DOM-Based

    我们客户端的js可以对页面dom节点进行动态的操作,比如插入、修改页面的内容。比如说客户端从URL中提取数据并且在本地执行、如果用户在客户端输入的数据包含了恶意的js脚本的话,但是这些脚本又没有做任何过滤处理的话,那么我们的应用程序就有可能受到DOM-based XSS的攻击。因此DOM型XSS的

    CSRF攻击

    一、CSRF是什么

    CSRF全称为跨站请求伪造(Cross-site request forgery),是一种网络攻击方式,也被称为 one-click attack 或者 session riding。

    二、CSRF攻击原理

    CSRF攻击利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web应用程序,去执行并非用户本意的操作。

    三、CSRF攻击实例

    角色:
    正常浏览网页的用户:User
    正规的但是具有漏洞的网站:WebA
    利用CSRF进行攻击的网站:WebB

    步骤一

    用户登录、浏览并信任正规网站WebA,同时,WebA通过用户的验证并在用户的浏览器中产生Cookie。

    步骤二

    攻击者WebB通过在WebA中添加图片链接等方式诱导用户User访问网站WebB。
    或者
    攻击者利用广告或者链接等诱导你打开网站webB。

    webB网站中会利用form表单或者其他方式,向网站webA发送请求,网站的接口请求格式一般很容易获取到,例如 webA.com/api/zhuanzhang?account=A&count=10000&to=pianzi 发送的请求会自动携带上webA的cookie信息,即你的身份验证信息

    步骤三

    服务器端在收到请求后,检验身份信息是正确的,然后整个攻击就完成了

    如何防御?

    方案一:在http协议中,在http头有个叫做Referer字段,它记录了请求的来源地址,正常来说,执行一个操作需要在网站A登录,点击控件发出请求到服务器。而csrf攻击,是在黑客自己网站中发出请求,当user打开网站B时,网站B会向网站A发出请求,而这个请求是网站B的,所以,要防御csrf,就得从这个请求入手,检查请求是否来自网站A,只需要检查Referer字段即可

    什么是DDos攻击

    分布式拒绝服务(DDoS)攻击是通过大规模互联网流量淹没目标服务器或其周边基础设施,以破坏目标服务器、服务或网络正常流量的恶意行为。

    DDoS 攻击利用多台受损计算机系统作为攻击流量来源以达到攻击效果。

    总体而言,DDoS 攻击好比高速公路发生交通堵塞,妨碍常规车辆抵达预定目的地。

    DDoS 攻击的工作原理

    DDoS 攻击是通过连接互联网的计算机网络进行的。

    这些网络由计算机和其他设备(例如 IoT 设备)组成,它们感染了恶意软件,从而被攻击者远程控制。这些个体设备称为机器人(或僵尸),一组机器人则称为僵尸网络。

    一旦建立了僵尸网络,攻击者就可通过向每个机器人发送远程指令来发动攻击。

    当僵尸网络将受害者的服务器或网络作为目标时,每个机器人会将请求发送到目标的 IP 地址,这可能导致服务器或网络不堪重负,从而造成对正常流量的拒绝服务。

    由于每个机器人都是合法的互联网设备,因而可能很难区分攻击流量与正常流量。

    如何识别 DDoS 攻击

    DDoS 攻击最明显的症状是网站或服务突然变慢或不可用。但是,造成类似性能问题的原因有多种(如合法流量激增),因此通常需要进一步调查。流量分析工具可以帮助您发现 DDoS 攻击的一些明显迹象:

    来自单个 IP 地址或 IP 范围的可疑流量
    来自共享单个行为特征(例如设备类型、地理位置或 Web 浏览器版本)的用户的大量流量
    对单个页面或端点的请求数量出现不明原因的激增
    奇怪的流量模式,例如一天中非常规时间段的激增或看似不自然的模式(例如,每 10 分钟出现一次激增)
    DDoS 攻击还有其他更具体的迹象,具体取决于攻击的类型。

    如何防护 DDoS 攻击?

    难点在于区分真实客户流量与攻击流量。

    1、黑洞路由
    合法网络流量和恶意网络流量都将路由到空路由或黑洞,并从网络中丢弃。这不是理想的解决方案,因为它相当于让攻击者达成预期的目标:使网络无法访问。

    2、速率限制
    限制服务器在某个时间段接收的请求数量也是防护拒绝服务攻击的一种方法。

    虽然速率限制对于减缓 Web 爬虫窃取内容及防护暴力破解攻击很有帮助,但仅靠速率限制可能不足以有效应对复杂的 DDoS 攻击。

    然而,在高效 DDoS 防护策略中,速率限制不失为一种有效手段。

  • 相关阅读:
    辛星浅析跨域传输的CORS解决方式
    Hadoop HDFS (3) JAVA訪问HDFS
    【多线程】将大批量数据插入多张表,怎么知道多张表都插成功了
    【sublime text 3】sublime text 3 汉化
    【spring data jpa】使用spring data jpa时,关于service层一个方法中进行【删除】和【插入】两种操作在同一个事务内处理
    【spring data jpa】使用spring data jpa 的删除操作,需要加注解@Modifying @Transactional 否则报错如下: No EntityManager with actual transaction available for current thread
    【spring mvc】后台的API,测试中,总提示接口实体的某一个字段不能为null,但是明明给值了还提示不能为空
    【postman】postman测试API报错如下:TypeError: Failed to execute 'fetch' on 'Window': Invalid value 对中文支持不好
    【spring mvc】后台spring mvc接收List参数报错如下:org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.util.List]: Specified class is an interface
    【java】Java transient关键字使用小记【转】
  • 原文地址:https://www.cnblogs.com/jis121/p/15244614.html
Copyright © 2020-2023  润新知