防盗链&CSRF&API接口幂等性设计

Web API 漏洞介绍(一) API漏洞是指API安全性中可能被恶意行为者利用的潜在弱点或漏洞。这些漏洞可能存在于API的任何部分,从设计阶段到部署阶段。它们可能会导致严重的后果,例如数据泄露、未授权访问,甚至系统崩溃。 阅读详情

防盗链&CSRF&API接口幂等性设计

 防盗链技术

CSRF(模拟请求)

分析防止伪造Token请求攻击

互联网API接口幂等性设计

忘记密码漏洞分析

 

 

1.Http请求防盗链

什么是防盗链

比如A网站有一张图片,被B网站直接通过img标签属性引入,直接盗用A网站图片展示。

 如果别人的项目频繁引用我的图片的话 别人请求放访问的是我的 服务器  也会浪费我的宽带

如何实现防盗链

  判断http请求头Referer域中的记录来源的值,如果和当前访问的域名不一致的情况下,说明该图片可能被其他服务器盗用。

  Referer字段中记录了访问的来源(浏览器访问链接地址)

  http协议中: 请求头 请求体 请求 

  相当于限制资源(图片、文字) 只能在某个域名(限制某个服务器)来源进行访问

  在互联网本质通讯底层socket技术,socket技术里面二进制文件流传输,不论是图片还是视频都是玩的二进制文件流进行传输

     

 

补充如果看不到请求头:

从哪个访问地址过来的信息 如上图所示

 

A项目(服务器A):

maven:

  

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
    </parent>
    <dependencies>
        <!-- SpringBoot 对lombok 支持 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!-- SpringBoot web 核心组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </dependency>
        <!-- SpringBoot 外部tomcat支持 -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

        <!-- springboot-log4j -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j</artifactId>
            <version>1.3.8.RELEASE</version>
        </dependency>
        <!-- springboot-aop 技术 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

    </dependencies>

 

 Controller:

@Controller
public class JspController {
    private static final Logger logger = LoggerFactory.getLogger(JspController.class);

    @RequestMapping("/jspIndex")
    public String jspIndex() {

        logger.info("springboot 集成logger 日志成功!!!");

        return "jspIndex";
    }

}

jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

    <h1>我是A项目....</h1>
    <img alt="" src="http://toov5.test1.cc:8080/imgs/01.png">
</body>
</html>

可以看到 静态资源访问的路径:  

http://toov5.test1.cc:8080/imgs/01.png

 

 

 

B项目(服务器B):  过滤器 + 静态资源

 maven:

 

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
    </parent>
    <dependencies>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!-- mysql 依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!-- SpringBoot 对lombok 支持 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!-- SpringBoot web 核心组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </dependency>
        <!-- SpringBoot 外部tomcat支持 -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

        <!-- springboot-log4j -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j</artifactId>
            <version>1.3.8.RELEASE</version>
        </dependency>
        <!-- springboot-aop 技术 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-lang/commons-lang -->
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
    </dependencies>

 

Filter:

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;

import org.apache.catalina.servlet4preview.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value;

// 图片防盗链
@WebFilter(filterName = "imgFilter", urlPatterns = "/imgs/*")
public class ImgFilter implements Filter {
    @Value("${domain.name}")
    private String domainName;

    public void init(FilterConfig filterConfig) throws ServletException {
    

    }
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        System.out.println("filter");
        // 1.获取请求头中的来源字段
        HttpServletRequest req = (HttpServletRequest) request;
        String referer = req.getHeader("Referer");
        if (StringUtils.isEmpty(referer)) {
            request.getRequestDispatcher("/imgs/error.png").forward(req, response);
            return;
        }
        // 2.判断请求头中的域名是否和限制的域名一致
        String domainUrl = getDomain(referer);
        System.out.println(domainUrl);
        // 正常情况 黑名单 白名单接口  
        if (!domainUrl.equals(domainName)) {
            request.getRequestDispatcher("/imgs/error.png").forward(req, response);  //实际项目中这里是 从数据库查询出来的结果 不是写死的这样的
            return;
        }
        // 直接放行图片
        chain.doFilter(req, response);

    }

    /**
     * 获取url对应的域名
     */
    public String getDomain(String url) {
        String result = "";
        int j = 0, startIndex = 0, endIndex = 0;
        for (int i = 0; i < url.length(); i++) {
            if (url.charAt(i) == '/') {
                j++;
                if (j == 2)
                    startIndex = i;
                else if (j == 3)
                    endIndex = i;
            }

        }
        result = url.substring(startIndex + 1, endIndex);
        return result;
    }

    public void destroy() {
        // TODO Auto-generated method stub

    }

}

需要过滤处理的域名:

 

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

domain.name=toov5.test1.cc:8080

 

过滤器打印:  此时的访问url:http://toov5.test1.cc:9090/jspIndex   与配置中的 domain.name=toov5.test1.cc:8080  不符合

 

 B项目实际上就是 过滤器 + 静态资源   有A服务器想要的资源

 

 

实际开发中设置白名单  就是只能某某某服务器的才可以哈哈

玩的就是请求头哈哈 关键词  Referer

 

 

CSRF

CSRF攻击产生的原因

 

(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用也就是人们所知道的钓鱼网站。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

 

 

 

API接口幂等性设计


 

会话信息,可能使用Token方式进行保存。

 API接口幂等设计 : 保证数据唯一性 不允许有重复的  (防止表单重复提交 ) 

 

互联网API幂等接口设计解决方案:

  网络延迟 重复提交多次 ~~    防止

  或者恶意的攻击 重复提交~~ 防止

  所以我要防止别人模拟恶意请求啊 

1.MVCC方案

 多版本并发控制,该策略主要使用 update with condition(更新带条件来防止)来保证多次外部请求调用对系统的影响是一致的。在系统设计的过程中,合理的使用乐观锁,通过 version 或者 updateTime(timestamp)等其他条件,来做乐观锁的判断条件,这样保证更    新操作即使在并发的情况下,也不会有太大的问题。例如

  select * from tablename where condition=#condition# // 取出要跟新的对象,带有版本 versoin

  update tableName set name=#name#,version=version+1 where version=#version#

 在更新的过程中利用 version 来防止,其他操作对对象的并发更新,导致更新丢失。为了避免失败,通常需要一定的重试机制。

 乐观锁 无锁机制,通过版本字段判断,如果多线程下。只能有一个操作成功

 but如果所有程序都这么玩儿 会影响效率的!

2.去重表方案

在插入数据的时候,插入去重表(额外添加一张表),利用数据库的唯一索引特性,保证唯一的逻辑。

3.悲观锁

select for update,整个执行过程中锁定该订单对应的记录。注意:这种在 DB 读大于写的情况下尽量少用。

 

 

4.token机制,防止页面重复提交(推荐使用)

 业务要求:页面的数据只能被点击提交一次

 发生原因:由于重复点击或者网络重发,或者 nginx 重发等情况会导致数据被重复提交

    解决办法:

                     集群环境:采用 token 加 redis(redis 单线程的,处理需要排队)

                     单 JVM 环境:采用 token 加 redis 或 token 加 JVM 内存

   处理流程:

                     数据提交前要向服务的申请 token,token 放到 redis 或 jvm 内存,token 有效时间

                     提交后后台校验 token,同时删除 token,生成新的 token 返回

token 特点:   要申请,一次有效性,可以限流

实现步骤:

客户端每次在调用接口的时候,需要在请求头中,传递令牌参数,每次令牌只能用一次。

一旦使用之后,就会被删除,这样可以有效防止重复提交。

步骤:

1.生成令牌接口

2. 接口中获取令牌验证

令牌方式防止Token重复提交:

  补充下:

 1.什么Token(令牌) 表示是一个零时不允许有重复相同的值(临时且唯一)
 2.使用令牌方式防止token重复提交。

 

 使用场景:

  在调用第API接口的时候,需要传递令牌,该Api接口 获取到令牌之后,执行当前业务逻辑,让后把当前的令牌删除掉。
  在调用第API接口的时候,需要传递令牌 建议15-2小时
  代码步骤:
 1.获取令牌
 2.判断令牌是否在缓存中有对应的数据
 3.如果缓存没有该令牌的话,直接报错(请勿重复提交)
 4.如果缓存有该令牌的话,直接执行该业务逻辑
 5.执行完业务逻辑之后,直接删除该令牌。

 调用接口之前先生成令牌,调用接口时候把令牌存放在请求头中传递过去。然后进行处理

 

首先获取token:

不带token请求:

 

再次携带token:(此时服务器端生成的token被删除了) 再次携带这个token 会执行相应的提示逻辑

 

 执行一次成功之后 会删除token 下次携带tonken会与服务器对应不上而错误

 

 tokenUtils:

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import org.apache.commons.lang.StringUtils;


public class TokenUtils {

    private static Map<String, Object> tokenMaps = new ConcurrentHashMap<String, Object>();

    // 获取令牌
    public static synchronized String getToken() {
        // 如何在分布式场景下使用分布式全局ID实现
        String token = "token" + System.currentTimeMillis();
        // hashMap好处可以附带 关联值   这里没有附带其他的
        tokenMaps.put(token, token);
        //比如附带值
       //tokenMaps.put(token, "userId")
        return token;
    }

    public static boolean findToken(String tokenKey) {
        // 判断该令牌是否在tokenMap 是否存在
        String token = (String) tokenMaps.get(tokenKey);
        if (StringUtils.isEmpty(token)) {
            return false;
        }
        // token 获取成功后 删除掉
        tokenMaps.remove(token);
        return true;
    }
}

实体类:

public class OrderEntity {

    private int id;
    private String orderName;
    private String orderDes;

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @param id
     *            the id to set
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * @return the orderName
     */
    public String getOrderName() {
        return orderName;
    }

    /**
     * @param orderName
     *            the orderName to set
     */
    public void setOrderName(String orderName) {
        this.orderName = orderName;
    }

    /**
     * @return the orderDes
     */
    public String getOrderDes() {
        return orderDes;
    }

    /**
     * @param orderDes
     *            the orderDes to set
     */
    public void setOrderDes(String orderDes) {
        this.orderDes = orderDes;
    }

}

Controller:

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.itmayeidu.utils.TokenUtils;
import com.itmayiedu.entity.OrderEntity;
import com.itmayiedu.mapper.OrderMapper;

@RestController
public class OrderController {

    @Autowired
    private OrderMapper orderMapper;

    @RequestMapping("/getToken")
    public String getToken() {
        return TokenUtils.getToken();
    }

    // 验证Token
    @RequestMapping(value = "/addOrder", produces = "application/json; charset=utf-8")
    public String addOrder(@RequestBody OrderEntity orderEntity, HttpServletRequest request) {
        // 代码步骤:
        // 1.获取令牌 存放在请求头中
        String token = request.getHeader("token");
        if (StringUtils.isEmpty(token)) {
            return "参数错误!";
        }
        // 2.判断令牌是否在缓存中有对应的令牌
        // 3.如何缓存没有该令牌的话,直接报错(请勿重复提交)
        // 4.如何缓存有该令牌的话,直接执行该业务逻辑
        // 5.执行完业务逻辑之后,直接删除该令牌。
        if (!TokenUtils.findToken(token)) { 
            //如果返回false 就提示 请勿操作
            return "请勿重复提交!";
        }
        orderEntity.setOrderName("黄焖鸡米饭");
        orderEntity.setOrderDes("美味");
        int result = orderMapper.addOrder(orderEntity);
        return result > 0 ? "添加成功" : "添加失败" + "";
    }

}

下次来查询时候 由于执行成功之后会删除token 所以查询的结果是false  提示"请勿重复提交"

 

防御CSRF攻击手段

如果用户提前多次生成好token 再恶意重复提交的情况,如何进行处理? 

比如HttpClient去获取到token然后拿来使用

使用图形验证码防止机器模拟接口请求攻击,在调用核心业务接口时,比如支付、下单、等接口,最好使用手机短信验证验证或者是人脸识别,防止其他用户使用token伪造请求。 

也可以通过Nginx实现限流(1分钟之内接受1000个请求),配置黑名单白名单(如果发现某人恶意请求攻击,屏蔽他的IP)

 

如何防止伪造token请求

 市面上没有百分百的完全识别验证码的工具~

 在实际项目中,会话信息使用令牌方式保存。如果黑客利用抓包技术分析到令牌。黑客技术使用令牌伪造支付下单等核心业务。

 绑定ip (4g网络的ip是不固定的)

 在互联网上没有绝对防止伪造请求。 但是可以在调用接口时候,确认是本人的操作。使用发送短信验证码或者图像识别的方式。

 在核心接口上,一定要确认是本人操作,比如密码修改,支付下单等等操作

 

黑客使用抓包工具分析Http请求,在忘记密码找回时,需要发送一套短信验证码,如果验证码数字比较短的话,很容易使用暴力破解方式攻击破。

防御手段:

忘记密码验证码最好在6-8位。

一旦频繁调用接口验证时,应该使用图形验证码拦截,防止机器模拟。

使用黑名单和白名单机制,防御攻击。

 

关于:

1、忘记密码漏洞暴力破解找回密码

2、使用上传文件漏洞格式化服务器硬件     注入个rm -rf * 就完蛋了

3、常见其他攻击和漏洞(ErrorCode, Html注释流动,路径遍历漏洞)

 

 使用短信验证码可以被破解,在忘记密码短信找回中有一个code(短信验证码)。

   提交时候 Java程序 HttpClient技术开启多线程,暴力破解生成对应的4位数字以内验证码进行验证,如果一旦验证成功,成功破解。

   防止的话就是 找回验证码中加入 字母  字母和数字混合使用   如果找回密码接口重试五次以上还是错误(出现图形验证码)防止继续模拟

   配置防止DDOS,限制IP访问,配置黑名单白名单。

 

  在做值传递时候 慎重隐藏域  <input type="hidden" >

 

  使用上传文件漏洞格式化服务器硬盘: 对于上传的文件 要判断文件流 而不是名字后缀啥的   

  上传文件时候 没有限制格式 导致任意上传文件  如果黑客上传木马文件的(可执行程序)情况。可能会导致服务崩溃

  案例: 上传木马文件 删除某个文件 (jsp exe  bat)

  解决方案:   

   方式一: 在上传文件时候  一定要使用判断文件流的方式 确定是图片  不要判断后缀方式获取图片

   方式二: 静态资源与动态资源分开服务器  Nginx+Tomcat实现   动静分离   Nginx存放静态资源 没有tomcat环境

   方式三: 服务器硬盘上不能做删除操作

   方式四: 权限设置 对于目录的操作权限没有

   方式五: 前端做后缀限制

   方式六:服务器上不要有热部署功能。如果我上传class文件。 Java程序就能获取到了。限制 jsp  exe  等可执行程序。

  

  上传文件漏洞原理: jsp里面有操作文件的代码  我上传后 然后访问这个jsp 在tomcat环境下 执行这个文件 执行了 就完蛋了 

  用第三方工具类去判断流

 

小结:


 

 

  XSS :   JS脚本注入  获取用户信息(token等等)  防御方式   使用特殊字符转换的方式 +过滤器拦截处理

  CSRF: 跨站模拟请求       

                保证接口幂等性 : token方式             

                防止机器识别:   token+图形识别         尽力而为 没有百分百破解验证码  图形验证码至少能有效阻止    token+图形识别+限流  有次数限制的

                如何防止CSRF 模拟请求  最好使用图形验证码+如果调用核心业务接口 比如支付等安全相关  最好发送短信验证+人脸识别

                如果抓包分析到toeken 可以伪造下单  

             

其他攻击和漏洞

直接异常信息,会给攻击者以提示。 可以使用mvc中的工具,把错误码异常等进行封装

HTML注释, 会暴露功能,方便攻击。 上线时去除注释

文件上传, 如果本身功能就是上传文件去执行,那么就有可能执行非常危险的命令。 解决方式是,设置文件白名单,限制文件类型,另外还可以重新命名文件,改名为不可执行的

路径遍历, 使用相对路径来遍历未开放的目录。 方式是将JS,CSS部署在独立的服务器,使用独立域名。 其他文件不使用静态URL访问,动态参数不包含文件路径信息。

 

API接口漏洞利用及防御 未经身份验证和授权访问:API接口没有进行适当的身份验证和授权验证,导致攻击者可以直接访问敏感数据或执行未经授权的操作。这种漏洞可能是由于弱密码、缺少访问令牌或缺乏强制访问控制机制导致的。不正确的访问控制:API接口未正确实施访问控制机制,允许攻击者越权访问受限资源。这可能包括缺少角色验证、错误配置的权限策略或漏洞的访问控制列表(ACL)配置。敏感信息泄露:API接口在响应中返回了敏感信息,如数据库连接字符串、用户凭据、私钥等。攻击者可以利用这些信息进行进一步的攻击,例如数据库注入、身份盗窃等。 阅读详情

相关推荐

保姆级教程:用vxe-grid给管理后台加个「智能筛选」功能(支持模糊搜索/多选/范围查询)

本文提供了一份详细的Vxe-Grid智能筛选功能实现教程。通过自定义筛选器渲染,文章逐步指导开发者为后台管理系统添加支持模糊搜索、多选下拉和数值范围查询的智能筛选功能,并分享了性能优化与移动端适配等实战经验。

weixin_29021291的博客 536

网络安全之XSS、CSRF、API接口攻击

前言对于网站开发,我们不得不面对各种网络攻击。而网络攻击的方式千姿百态,这次我们就将学习下常见的三种方式 —— XSS、CSRF、API接口攻击。XSS介绍维基百科: 跨...

lentoo的博客 2493

威联通改装飞牛fnOS全攻略:从刷机到Docker影视部署

NAS系统是家庭数字存储的核心,x86架构的威联通设备凭借通用引导和驱动支持,成为改装替代系统的理想平台。飞牛fnOS作为基于Debian的国产NAS系统,以简洁UI、内置Docker和影视墙以及硬件转码能力,吸引了大量玩家。通过U盘引导安装、BIOS调整、系统盘SSD部署,可实现系统切换;原机械硬盘可挂载为存储池,配合Docker部署下载、远程访问等容器,影视中心自动削刮海报墙,硬件转码保障4K播放。改装过程需注意引导失败、硬盘识别、核显驱动等问题。这套方案能让老旧威联通焕发新生,兼顾易用性与扩展性。本文

weixin_33585822的博客 761

八种常见的防盗链方法总结及分析

作为普通的网民来说,一般不需要知道也不用关心什么是盗链,不过如果你是网站的开发者或维护者,就不得不重视盗链的问题了。如果你刚刚开发完一个没有防盗链的带有文件下载功能的网站,挂上internet,然后上传几个时下非常热门的软件或电影并在网站内公布下载地址,让MSN上的所有好友都来体验一下你的杰作。不用多久就会发现网速出奇地变慢,甚至服务器托管中心的服务员会热情地打电话告诉你的网站流量很大,估计是网站

聚合博客室 1824

pagerank算法详解

目录一、pagerank定义两个重要假设二、pagerank算法公式定义计算演示矩阵化计算三、存在的两个问题问题1.Dead Ends问题2.Spider Traps 一、pagerank定义 入链数:指向该节点的链接数 出链数:由该节点指出的链接数 以上图为例:A的入链数为1,出链数为3,所以将由A指向其他节点的边权重设置为1/3,表示A访问B、C、D节点的概率均为1/3 两个重要假设 数量假设:在Web图模型中,如果一个页面节点接收到的其他网页指向的入链数量越多,那么这个页面越重要。 质量假设:指向

gary101818的博客 4万+

信号处理领域的研究生看过来:手把手教你搞定ICASSP 2025论文投稿(附Latex模板与格式检查清单)

本文为信号处理领域研究生提供ICASSP 2025论文投稿的详细指南,涵盖Latex模板使用、格式检查清单及投稿流程。特别针对IEEE旗舰会议的严格要求和2025年可能出现的新变化,提供预判性建议和实战技巧,帮助作者高效完成论文投稿。

程涛 561

47_API接口漏洞

我觉得这里可以写个python脚本,与burp联用,在调用密码字典文件,给密码字典文件里面的每一个值都进行base64编码,然后获取第二个请求包,当第二个请求包里面的值与其它测试的值不一致的时候,就是破解出的账户密码,然后打印出账号密码。有的会遇到那种ip被ban的情况,可以考虑在打开网页的时候抓个包,然后修改client-ip或者X-Forwarded-For,将ip修改为其它的任意ip,就可以绕过ip被封禁的限制了。可以从网上去搜索下api接口去理解,下面有个我找到的网址,给出api接口的分类。

qq_45301512的博客 1099

SWIFT报文实战指南:从MT700到MT799的信用证操作全解析

本文深入解析了国际贸易中信用证操作的核心SWIFT报文流程,从开证的MT700到各类通知、修改及结算报文(如MT707、MT730、MT754、MT732/734等)。通过实战案例与关键字段拆解,指导外贸与银行从业者精准处理报文,规避风险,并探讨了利用自动化工具提升处理效率的方法,助力保障跨境交易顺畅。

weixin_29015801的博客 879

常见的API接口漏洞总结

熟悉这些漏洞非常重要,这样您就可以轻松识别它们,在参与渗透测试期间利用它们,并将其报告给组织,以防止犯罪分子将您的客户拖入头条新闻。现在您已经熟悉了 Web 应用程序、API 及其弱点。

summer_fish的专栏 7914

GEE APP:基于GEE的红树林监测平台

本文将介绍如何利用Google Earth Engine平台,结合Landsat系列卫星影像和SRTM高程数据,实现红树林分布的动态监测与变化分析。

此星光明博客 160

新能源汽车电机交流电流测量系统精度全链路分析

通过全链路误差建模与瓶颈分析,结合硬件选型优化与软件算法补偿,可将系统精度从4.2%提升至≤1% FS。本文所述方法论已应用于某800V电驱平台开发,实测电流控制精度达±0.8%,为高性能电机控制奠定基础。为例,深入剖析从互感器采集到CAN报文解析的全链路信号处理流程,揭示各环节误差来源及对最终精度的影响,为研发测试提供理论支撑。:±0.1%(电阻温漂与运放开环增益限制):运放增益带宽积(GBW)不足导致高频衰减。:±0.02%/℃(铁氧体材料温敏特性):±0.5%读数(磁芯饱和效应)

优快云-新能源汽车研发测试专业博主 1493

(45.3)【API接口漏洞专题】API接口原理、请求方法、类型、安全校验方法

【专题】API漏洞之基础

2835

PCIe 全解析笔记:从协议本质到工程实现

学习 PCIe,最容易陷入的误区是直接跳进协议手册(Base Spec 1300 多页),然后在 TLP 字段、LTSSM 状态、Ordering Rules 中迷失方向。正确的思维路径历史维度:从 PCI 到 PCIe,解决了什么核心矛盾?抽象维度:协议栈分层的真正意图是什么?工程维度:高速串行链路面临哪些物理挑战?协议如何应对?系统维度:作为 CPU 与外设的"动脉",PCIe 如何融入整个计算机体系?带着这四个视角去看每一个细节,知识才能内化为认知。

m0_46644103的博客 261

(45.4)【API接口漏洞】API接口常见的漏洞、owasp API 漏洞Top10

【API接口漏洞】Top10

3594

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

接口防盗链

作者:张一环 链接:http://www.zhihu.com/question/40159698/answer/85121831 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 这个一般意义上来说就是防盗链是吧。简单提一些方法,从接口的设计开始。 1. HTTPS。首先接口建议使用 HTTPS 协议,这样至少会给破解者在抓包的时候提高一些难度。上面也

junli_chen的博客 2677

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

网络安全:(八)前端 API 请求的安全性保障:如何防止非法访问

前端 API 请求的安全性保障是一个全方位、多层次的过程。我们可以从身份验证、数据加密、CSRF 防护、请求限制等多个方面入手,确保 API 在不同层面的安全性。通过这些措施,可以显著降低前端 API 被攻击的风险,提升应用的安全性。掌握这些技术和最佳实践,有助于构建更加安全、可靠的前端应用。希望本文的示例代码和讲解能为你提供实用的参考,帮助你在前端开发中有效地保障 API 的安全性。希望本文对你在前端 API 安全性保障方面有所帮助。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 1709

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【Django】测试带有 CSRF 验证的 POST 表单 API 报错:Forbidden (CSRF cookie not set.)

Django 使用 Apifox 测试 POST 表单报错。

HEX9CF的技术博客 1056

odoo中接口开发

文章参考:https://blog.youkuaiyun.com/qq_33472765/article/details/81913627案例0000001接口调用请求说明:https请求方式:GET(请使用https协议)csrf=Falsecsrf(Cross-site request forgery跨站请求伪造)问题,get请求不影响,post就需要csrf认证CSRF(跨站请求伪造) ...

weixin_30432007的博客 1629

CSRF 原理与防御案例分析

CSRF,也称 XSRF,即跨站请求伪造攻击,与 XSS 相似,但与 XSS 相比更难防范,是一种广泛存在于网站中的安全漏洞,经常与 XSS 一起配合攻击。 CSRF 原理 攻击者通过盗用用户身份悄悄发送一个请求,或执行某些恶意操作。 CSRF 漏洞产生的主要原因: 1、请求所有的参数均可确定 2、请求的审核不严格,如:只验证了 Cookie 关于 CSRF 的执行过程,这里引用自 hyddd 大...

weixin_43639741的博客 964

常见API漏洞解释以及应用层解决方案

常见API漏洞: 1.未受保护API:在现行的Open API开放平台中,一般需要对第三方厂商的API接入身份进行监管和审核,通过准入审核机制来保护API。当某个API因未受保护而被攻破后,会直接导致对内部应用程序或内部API的攻击。比如因REST、SOAP保护机制不全使攻击者透明地访问后端系统即属于此类。 加强保护机制审查和代码规范。 2. 弱身份鉴别:当API暴露给公众调用时,为了保障用户的可信性,必须对调用用户进行身份认证。因设计缺陷导致对用户身份的鉴别和保护机制不全而被攻击,比如弱密码、硬..

Liao_Wenzhe的博客 1万+

为什么 API 接口漏洞越来越多?与现代网站开发环境的关系

通过合理的安全测试和防御策略,可以有效降低 API 漏洞带来的安全风险,保障系统和用户数据的安全。在当今的 Web 开发环境中,API(应用程序接口)已成为前后端数据交互的核心。然而,API 安全问题也随之增加,漏洞频发,导致数据泄露、权限绕过等风险。在早期的 Web 开发中,常见的技术栈包括 PHP、JSP 等,服务器端渲染 HTML 并返回给浏览器。在 API 安全越来越重要的今天,开发者、测试人员和安全专家都需要加强 API 安全意识,并持续优化 API 的安全策略,以应对不断变化的网络安全挑战。

vortex5的博客 1365

警惕|API常见的五大漏洞

用于查询数据的错误消息也是如此,如果查询/搜索格式不正确或由于某种原因而无法执行,则应该返回最“没有营养”的错误信息:“糟糕,哪里出错了”。在最近的研究项目中,我们对目标服务的API调用返回了大量数据,很多都是不必要的数据信息,例如付款网关的处理器密钥和可用的折扣信息等。另一个常见的数据挑战是数据过载,很多企业都像入冬前的花栗鼠,存储的数据量远远超出了需要。解决方法:如果将用户看到的内容范围限制为必需内容,限制关键数据的传输,并使数据查询结构未知,那么攻击者就很难对他们知道的参数进行暴力破解。

电商数据Girl的博客 911

【干货】常见API接口漏洞总结

仍在开发中的 API 通常使用诸如 .如果您知道 API 现在正在使用 apiv3.org/admin 但 API 文档的一部分提到了 apiv1.org/admin,则可以尝试测试不同的端点以查看 apiv1 或 apiv2 是否仍处于活动状态。一个四位数的代码只需要 10,000 个请求。正如我们从第2章讨论的REST API的六个约束中知道的那样,RESTful API应该是无状态的。例如,如果 API 的支持安全配置揭示了未修补的漏洞,则攻击者有可能利用已发布的漏洞轻松“pwn”API 及其系统。

2301_79478575的博客 547
上一篇: ELK分布式日志收集搭建和使用
下一篇: API接口幂等性框架设计
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值