网站防止远程POST提交的方法思路。discuz的submitcheck函数评析

discuz源码研究—发帖 实现了浏览栏目列表和帖子列表之后,下面最重要的就是实现发帖功能,先看了看论坛网页版的html代码,提取出下面这些有用的代码:<html> <head> <script src="http://112.74.102.213/static/js/forum.js?A6S" type="text/javascript"></script> <meta charset="utf-8" 阅读详情

discuz自带的一个判断是否是远程提交,其实这个函数这样毫无意义。

discuz的自带的判断是否是远程提交的函数submitcheck:地址 D:\website\***.com\www\source\class\helper\helper_form.php


	public static function submitcheck($var, $allowget = 0, $seccodecheck = 0, $secqaacheck = 0) {
		if(!getgpc($var)) {
			return FALSE;
		} else {
			global $_G;
			if($allowget || ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_GET['formhash']) && $_GET['formhash'] == formhash() && empty($_SERVER['HTTP_X_FLASH_VERSION']) && (empty($_SERVER['HTTP_REFERER']) ||
			preg_replace("/https?:\/\/([^\:\/]+).*/i", "\\1", $_SERVER['HTTP_REFERER']) == preg_replace("/([^\:]+).*/", "\\1", $_SERVER['HTTP_HOST'])))) {
				if(checkperm('seccode')) {
					if($secqaacheck && !check_secqaa($_GET['secanswer'], $_GET['sechash'])) {
						showmessage('submit_secqaa_invalid');
					}
					if($seccodecheck && !check_seccode($_GET['seccodeverify'], $_GET['sechash'])) {
						showmessage('submit_seccode_invalid');
					}
				}
				return TRUE;
			} else {
				showmessage('submit_invalid');
			}
		}
	}

标准就是REQUEST_METHOD和HTTP_REFERER还有formhash(),其实这个里面最唯一有用途的就是formhash()。如果是软件提交,HTTP_REFERER是可以自己修改定义的。


防止远程提交的思路:

(1)如果是你使用的程序是discuz的,可以打开discuz,将里面的formhash这个input的名字替换成其他的!比如直接替换成formhash()的值。同时修改这个检测函数submitcheck(),把formhash改成你改的那个字符串。

(2)如果不想修改discuz源码,但知道如何修改js的话,可以直接使用jquery post请求formhash() JS动态生成formhash这个<input type="hidden" name="formhash" />

其实如果discuz的官网程序默认的formhash这个是js动态创建,那么就完全可以过滤到95%远程提交。除非你的网站是类似58同城、赶集网这样的,软件提交者每时每刻都在关注修改调整他的程序。

(3)注册限制,未登录的用户不允许进行发帖任何操作。如果你使用的不是开源的流行的程序,除非你的网站特别牛,否则没有人会话心思来做一个专门针对你的网站的批量发帖软件!那些自动提交的软件都是定做的,不存在万能的提交。






Discuz全版本任意文件删除漏洞 Discuz全版本任意文件删除漏洞验证用的版本:discuz3.2 0x1首先在根目录下新建一个文件 0x2 构造poc1修改出生地区 注意其中的formhash需要替换掉,具体是在源码中找。 为什么这里要替换掉formhash呢? 一开始不太清楚,网页会报错,如下看到了有一个xss验证蛮去找一下这个文件private function _xss_check() { stat 阅读详情

相关推荐

1 FFmpeg从入门到精通-FFmpeg简介

1.FFmpeg简介 1.1 FFmpeg的定义 1.2 FFmpeg的历史 1.3 FFmpeg的基本组成 1.4 FFmpeg的编解码工具ffmpeg 1.5 FFmpeg的播放器ffplay 1.6 FFmpeg的多媒体分析器ffprobe 1.7 FFmpeg编译(1)FFmpeg之Windows平台编译(2)FFmpeg之Linux平台编译(3)FFmpeg之OS X平台编译 1.8 FFmpeg编码支持与定制(1)FFmpeg的编码器支持(2)FFmpe

migu123的专栏 3687

Discuz X 3.4 系列漏洞梳理

分析了目前已经公开的Dz3.4系列漏洞,作为学习和记录。 Discuz!X ≤3.4 任意文件删除漏洞 1、简述 漏洞原因:之前存在的任意文件删除漏洞修复不完全导致可以绕过。 漏洞修复时间:2017年9月29日官方对gitee上的代码进行了修复 2、复现环境 因为官方提供的下载是最新的源码,漏洞修复时间是17年9月29日,通过git找一个修复前的版本签出就可。 git checkout 1a912ddb4a62364d1736fa4578b42ecc62c5d0be 通过安装向导安装完.

weixin_50464560的博客 3万+

WGS-84 ECEF ENU 坐标系学习记录

地球坐标系固定在地球上而随地球一起在空间做公转和自转运动,因此地球上任一固定点在地球坐标系的坐标就不会由于地球旋转而变化。地心地固直角坐标系和大地坐标系都属于这种坐标系。 一、 几种坐标系 地心地固直角坐标系(ECEF)坐标系 其原点为地球的质心,x轴延伸通过本初子午线(0度经度)和赤道(0deglatitude)的交点。 z轴延伸通过的北极(即,与地球旋转轴重合)。 y轴完成右手坐标系,穿...

YYshuangshuang的博客 1万+

php discuz 顶,discuz模拟登录实现自动顶帖php程序_PHP教程

在php 模仿登录我们需要使用curl_init函数,下面我来介绍利用 curl 模拟 post 登录discuz论坛并且实现自动顶帖功能。其实模拟登录就那点事,无法就是获得相应的参数,然后模拟发送,把获得的COOKIE 带入下一步操作中去discuzx 系列为防止灌水,一直在用 formhash() 这个函数:1、下面来看下formhash 这个函数:代码如下复制代码function formh...

weixin_35208293的博客 529

SAR成像系列:【3】合成孔径雷达(SAR)的二维回波信号与简单距离多普勒(RD)算法 (附matlab代码)

二维回波信号分析

zr2006_7的专栏 2万+

基于Simulink的前馈解耦SVPWM整流器仿真

本文提出了一种基于Simulink的前馈解耦SVPWM整流器仿真方案,针对传统双闭环控制存在的耦合严重、电压利用率低等问题进行优化。通过前馈补偿dq轴耦合项(ωLiq和ωLid)结合SVPWM调制算法,实现了电流跟踪误差<3%、电压利用率达0.99、THD<3%的性能指标。文章详细阐述了系统架构设计,包括前馈解耦原理推导、SVPWM算法实现步骤,并提供了完整的Simulink建模方法。仿真结果表明,该方案在动态响应速度(25ms)和直流电压纹波(1.1%)方面显著优于传统SPWM控制。同时给出了

MHD0815的博客 162

discuz formhash

class.core.php中 $this->var['formhash'] = formhash();define('FORMHASH', $this->var['formhash']); hash值生成方法 function formhash() { return substr(md5(substr($this->time, 0, -4).UC_KEY)...

weixin_30951231的博客 400

自动驾驶技术路线之争:纯视觉与多模态融合的成本与性能博弈

本文深入剖析了自动驾驶领域两大主流技术路线——纯视觉与多模态融合的本质差异。文章从成本结构、性能博弈与商业逻辑等多维度展开,揭示了纯视觉方案在硬件成本与数据算力投入上的权衡,以及多模态融合方案在安全冗余与感知稳定性方面的优势。这场技术路线之争,实则是车企在性能、成本与商业化落地之间寻求平衡的综合博弈。

weixin_29038303的博客 390

Discuz!常用函数解析(续)

/*** 产生随机码* @param $length - 要多长* @param $numberic - 数字还是字符串* @return 返回字符串*/function random($length, $numeric = 0) {        PHP_VERSION &lt; '4.2.0' &amp;&amp; mt_srand((double)microtime() * 1000000)...

weixin_33901926的博客 461

完美解决unknown failed to transfer from http://0.0.0.0/ during a previous attempt的错误

完美解决unknown failed to transfer from http://0.0.0.0/ during a previous attempt的错误

念兮为美 2279

ContextCapture系列教程(三):大疆精灵4RTK版无人机POS数据提取、处理(处理后勉强达到免相控要求)

大疆精灵 Phantom 4 RTK于2018年发布,是大疆为高精度建图与精准飞行设计的行业级无人机,在精灵4无人机外形的基础上,机身增加了RTK模块,可以实现高精度 RTK 定位导航,相机与 RTK 系统采用微秒级时间同步,可以通过app 进行航线规划飞行

pausau的博客 1万+

discuz/uchome等康盛产品formhash()浅析

formhash是一种类似验证码的东西,用来防止网站外部提交数据。 它在页面打开时就已经生成了,存在一需要提交数据用到的地方的隐藏input里(比如登录、发布文章)。 比如,在UCHOME的登录页面模板里,我们可以看到这样的: HTML代码      " />   formhash这个值是来自formhash()这个函数的。在我们(登录)提交表单时,同时也会把这个for

qw_xingzhe的专栏 6843

17、非线性动力学特征在情感语音与食管语音分析中的应用

本文探讨了非线性动力学特征在情感语音与食管语音分析中的应用。在情感语音识别中,选取Hurst指数、相关维数和Lempel-Ziv复杂度等混沌特征结合统计量,通过神经网络实现了中性、恐惧和愤怒情感的高效分类,全局成功率高达93.78%。在食管语音分析中,针对其缺乏明显周期性的问题,提出基于改进自相关方法的基频测量流程,包括包络计算、平滑与峰值细化,并对基频的物理意义提出思考。研究展示了两类语音在特征表现与技术方法上的差异,展望了其在客服、安全、医疗康复等领域的应用前景,并指出了未来在特征拓展、算法优化和发声机

sunny的博客 72

discuz formhash 隐藏域的写法

给大家直接上模板

天天的博客 628

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

DISCUZ代码分析

logging.php //定义操作页面define(CURscrīpt, logging);//包含公共文件require_once ./include/common.inc.php;//包含misc函数文件require_once DISCUZ_ROOT../include/misc.func.php;//判断动作//注销if($ac

Jason's blog 3871

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Discuz后台页面函数之表单函数

函数原型 // 输出表单头函数 function showformheader($action, $extra = '', $name = 'cpform', $method = 'post') // 输出表单尾函数 function showformfooter() // 输出表单项函数,如text radio checkbox等 function showsetting($setname, $varname, $value, $type = 'radio'...

dgt的专栏 419

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【PHP】(原创)之表单FORM的formhash校验,以TP3.2示例

1、目的:每次表单POST提交(ajax的POST也适用)过来数据,都必须校验formhash参数是否和服务器端的一致,不一致说明重复提交或者 跨站攻击提交csrf 2、原理:参照了 KPPW 的formhash生成和校验示例。将formhash的生成写入基类构造函数,每次登陆用户操作数据,都生成hash并进行比较。 (用户未登录状态,也可以校验formhash,可以让你的网站免于 遭受  无状态...

weixin_34292924的博客 1560

Discuz!常用函数解析(3)

/** * 刷新重定向 */ function dreferer($default = '') {         global $referer, $indexname;         $default = empty($default) ? $indexname : '';         if(empty($referer) && isset($GLOBALS['_SERVER

我的地盘 1630

python discuz发帖_python:Discuz发帖器的实现

首先要清楚discuz论坛发帖的流程,简单地说就是以下流程:进入登录页 ->登录 -> 进入版面 ->发帖登录和发帖时要获取到页面的formhash值,否则会失败,如果启用了验证码,还得去分析验证码,这就比较复杂了。这里只用python来描述这一系列过程,涉及到验证码还请大家自行去实现。#!/usr/bin/env python#coding=utf-8from urllib i...

weixin_36234738的博客 1333

discuz 核心函数分析

discuz 核心函数分析   /**  * 系统错误处理  * @param $message 错误信息  * @param $show 是否显示信息  * @param $save 是否存入日志  * @param $halt 是否中断访问  */ function system_error($message, $show = true, $sa

liuzp111的专栏 1361

discuz3.0 获取fromhash方法

function get_esquire_com_cn_formhash() { $uid = 8; $username = 'Imuser'; $timestamp = time(); /* ./config/config_default.php配置中的信息*/ $authkey = 'sdeefffffffffdererererer'; /...

weixin_30855761的博客 1108

【原】discuz! 7.2 超详细代码解析(2)

2010年07月16日 星期五 20:30 由于某度众所周知的举动,让我搬离写了5年的渣度空间,准备把技术性的文章定在优快云了。这些都是文章备份。勿怪。。 鉴于最近有些抓取机器和抄袭者,把标题的【原】字都复制,我不得不声明:本文为 yukon12345原创,转载请注明出

步满生错的专栏 4517

discuz防刷新、防外部提交研究

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33727510的博客 497

Discuz! 插件开发实例讲解

      作者简介:童虎,Discuz!论坛程序研发经理,负责Discuz!论坛程序研发团队的管理工作,曾是Discuz!早期插件作者,担任过Freediscuz插件区版主。 曾开发过社区宠物、社区监狱、社区虚拟形象等多个Discuz!热门插件。   论坛向社区化发展已经成为趋势,站长对网站的个性化需求越来越高,同时随着网站规模的扩大,站长对于一些特殊功能的需求也越来越多, D...

luoke920 348

Discuz xss劫持发帖,置顶帖子等

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34348805的博客 517

Android HttpClient自动登陆discuz论坛!

你登陆论坛的时候,我们先看看浏览器干了什么事儿: 用Firefox打开HiPda 的登陆页面,输入用户名和密码,点登陆。 下面是通过firebug插件获取的数据: 可以看到浏览器这个http://www.hi-pda.com/forum/logging.php?action=login&loginsubmit=yes&inajax=1网址发了一个POST请求 看一下它POST的参数

652
上一篇: PHP代码编辑软件,不知道别人用的是那一款。。。
下一篇: PHP 匹配提交的内容中是否含有网址。防止网址但是会屏蔽邮箱,慎用
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值