『python爬虫』formhash 与 跨站请求伪造(CSRF)攻击

目录

    • 1. 什么是跨站请求伪造(CSRF)攻击?
    • 2. 防御 CSRF 攻击的措施
    • 3. 在爬虫反爬中的具体应用 - formhash
    • 总结


欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中

1. 什么是跨站请求伪造(CSRF)攻击?

跨站请求伪造(CSRF)攻击是一种网络安全漏洞,攻击者利用用户当前已认证的会话来执行未经用户授权的操作。攻击者通过诱使受害者点击包含恶意请求的链接或访问恶意网站,从而利用受害者当前的身份验证信息(如 Cookie 或其他认证凭证)来发送未经授权的请求,比如执行转账、更改密码等操作。

CSRF 攻击的典型场景包括以下步骤:

  • 受害者登录了一个网站,并且保留了登录状态。
  • 攻击者诱使受害者访问包含恶意请求的页面,比如点击了带有恶意链接的邮件、访问了恶意网站等。
  • 页面中的恶意请求会利用受害者当前的身份验证信息,比如 Cookie,来执行一些操作,比如发起银行转账、更改密码等。

2. 防御 CSRF 攻击的措施

  • 使用随机生成的 token:在表单提交时,向表单中插入一个随机生成的 token(即 formhash 等),服务器收到请求时验证该 token 的有效性。
  • 同源检测:服务器端可以检查请求的来源是否与当前网站的域名相匹配,如果不匹配则拒绝请求。
  • 验证 HTTP Referer 头:服务器端可以验证请求的 HTTP Referer 头部,确保请求来自合法的来源。
  • 对于网站开发者和管理员来说,保护用户免受 CSRF 攻击的影响是非常重要的。同时,用户也应当保持警惕,避免点击怀疑链接,尤其是包含个人敏感操作的链接。

3. 在爬虫反爬中的具体应用 - formhash

formhash通常用于网页中的表单提交。

在网络应用程序中,为了防止跨站请求伪造(CSRF)攻击,开发者会在表单中包含一个名为 formhash 的隐藏字段。formhash 是一个随机生成的字符串,每次表单提交时都会生成一个新的值。

在服务器端,当接收到带有 formhash 字段的表单提交请求时,开发者会验证 formhash 的值是否与当前用户会话中存储的值匹配。如果匹配成功,说明该请求是合法的,否则可能被视为 CSRF 攻击而被拒绝。

因此,formhash 的作用是增加表单提交的安全性,确保请求来自合法的来源。

需要注意的是,每个网站的实现方式可能略有不同,formhash 的名称和具体实现方式可能会因网站而异。

具体实战中应用示例[requests实战-精易论坛自动签到(保姆级图文+实现代码)]


总结

大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2023 mzh

Crated:2023-3-1

欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中
『未完待续』


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

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

相关文章

rust引用-借用机制扩展

rust引用-借用机制还是有限制的,比如我们要在多次函数调用中修改参数、跨线程传递参数并发修改的场景,单纯使用引用-借用机制就不灵了(这种场景和引用-借用功能是冲突的)。这时需要借助rust提供的Rc、Arc、Cell、RefCell对机制来扩…

【C语言】tcp_transmit_skb

一、__tcp_transmit_skb讲解 这个函数 __tcp_transmit_skb() 是 Linux 内核中 TCP/IP 协议栈的一部分,负责处理传输控制协议(TCP)数据包的发送。具体来说,这个函数将 TCP 头部添加到一个没有任何头部信息的 socket buffer (sk_bu…

计算机网络 路由算法

路由选择协议的核心是路由算法,即需要何种算法来获得路由表中的各个项目。 路由算法的目的很明显,给定一组路由器以及连接路由器的链路,路由算法需要找到一条从源路由器到目的路由器的最佳路径,通常,最佳路径是由最低…

Yocto - Project Quick Build

欢迎光临! 这篇简短的文档将向您介绍使用 Yocto 项目构建典型镜像的过程。本文还介绍了如何为特定硬件配置构建。您将使用 Yocto Project 构建一个名为 Poky 的参考嵌入式操作系统。 Welcome! This short document steps you through the process for a typical i…

Diddler抓包工具——学习笔记

F12抓包 302【重定向】:当你发送了一个请求之后,那么这个请求重定向到了另外的资源 跳转和重定向的区别: 跳转是会把数据传到新的地址 重定向不会把新的数据传到新的地址 使用F12抓包时一定要打开Preserve Log开关,作用是保留…

c#开发100问?

什么是C#?C#是由谁开发的?C#与Java之间有哪些相似之处?C#与C有哪些不同之处?C#的主要特性是什么?请解释C#中的类和对象。C#中的命名空间是什么?什么是C#中的属性和字段?请解释C#中的继承和多态性…

万用表数据导出变化曲线图——pycharm实现视频数据导出变化曲线图

万用表数据导出变化曲线图——pycharm实现视频数据导出变化曲线图 一、效果展示二、环境配置三、代码构思四、代码展示五、代码、python环境包链接 一、效果展示 图1.1 效果展示 (左图:万用表视频截图;右图:表中数据变化曲线图&am…

Springboot整合Mybaits启动过程

Springboot整合Mybaits启动过程 1.前言2.MybatisAutoConfiguration3.SqlSessionFactoryBean3.1 XMLConfigBuilder.parse()3.1.1 XMLMapperBuilder.parse()3.1.1.1 XMLStatementBuilder.parse() 4.SqlSession4.1 Executor 1.前言 直接加载mybatis配置文件,然后创建S…

Oracle 数据库sysaux表空间

导读 Oracle数据库中的SYSAUX表空间是一个特殊的表空间,它是在Oracle数据库10g版本中引入的。SYSAUX表空间用于存储数据库的辅助系统数据和附加组件数据,旨在减轻System表空间的负担,使得数据库管理更加高效。在本文中,我们将深入…

Matlab|【EI复现】电动汽车集群并网的分布式鲁棒优化调度模型

目录 1 内容简介 2 关键知识点 2.1 三类电动汽车模型 3 程序结果 4 下载链接 1 内容简介 电动汽车的数据模型种类繁多,但是用到比较高阶数学方法的并不多,本次分享的程序是下图所示的文章。 采用分布鲁棒优化模型,用到鲁棒对等转换&…

贪心区间问题(区间选点)

题目 给定 N 个闭区间 [ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 N,表示区间数。 接下来 N 行,每行…

开发指南002-前后端信息交互规范-请求类

请求类由org.qlm.io.vo.RequestInfo定义://1.0 Schema(description "平台-请求包版本标识 用于版本兼容") private String version;Schema(description "平台-请求者") private String consumer;//请求者 标识发出请求的系统Schema(descripti…

MyBatis3源码深度解析(七)JDBC单连接事务

文章目录 前言2.7 JDBC单连接事务2.7.1 事务的开启与提交2.7.2 事务隔离级别2.7.2.1 并发访问问题(1)脏读(2)不可重复读(3)幻读 2.7.2.2 事务隔离级别(1)TRANSACTION_NONE&#xff1…

BJFU|计算机网络期末复习考前速记

整理了一些重要名词的定义与概念,适合在考前几个小时过几次加深印象,可以更好应对选填与简答的题型。 互联网的定义:广义观点-远程信息处理进一步达到资源共享;资源共享观点-以相互共享资源的方式互联起来的自治计算机系统的集合…

百度信息流

计划: 流量选择 - 四个维度: 百度信息流 ; 整合了百度APP、WAP、PC各频道信息流和内容详情页的流量资源,广告和信息流内容资讯穿插展现;适合所有产品呢 好看视频; 汇集海量优质的视频内容,通过智能推荐算法为用户推送最适合的视频广告,视频广告在列表页有声…

【故障分类】基于注意力机制的卷积神经网络结合双向长短记忆神经网络CNN-BiLSTM-attention实现数据分类附matlab代码

摘要: 本文详细介绍了一种基于注意力机制的卷积神经网络(CNN)结合双向长短记忆神经网络(BiLSTM)实现数据分类的方法,并给出了详细的Matlab实现代码。本文首先概述了CNN、BiLSTM和注意力机制的基本原理,然后阐述了整体网络结构的设计思路&…

ChatGPT 串接到 Discord - 团队协作好助理

ChatGPT 串接到 Discord - 团队协作好助理 ChatGPT 是由 OpenAI 开发的一个强大的语言模型,本篇文章教你如何串接 Discord Bot ,协助团队在工作上更加高效并促进沟通与协作。使 ChatGPT 发挥出最大的功效,进一步提升工作效率和团队协作能力。…

Redis 内存的优化

目录 前言 Redis 的内存碎片问题 判断Redis 内存碎片 如何清理内存碎片? 前言 我想讲一下怎么提高Redis 内存的利用率,redis 的数据是保存在内存中。对内存的利用率低,意味着存的数据很少,并不意味着就没有内存了&#xff0c…

【解读】OWASP大语言模型应用程序十大风险

OWASP大型语言模型应用程序前十名项目旨在教育开发人员、设计师、架构师、经理和组织在部署和管理大型语言模型(LLM)时的潜在安全风险。该项目提供了LLM应用程序中常见的十大最关键漏洞的列表,强调了它们的潜在影响、易利用性和在现实应用程序…

利用华为CodeArts持续交付项目演示流程

软件开发生产线(CodeArts)是面向开发者提供的一站式云端平台,即开即用,随时随地在云端交付软件全生命周期,覆盖需求下发、代码提交、代码检查、代码编译、验证、部署、发布,打通软件交付的完整路径&#xf…