discuz的变通形式同父域提交数据

来源:互联网 发布:上古卷轴5白狼捏脸数据 编辑:程序博客网 时间:2024/04/28 10:01

因为discuz论坛对提交前来源判断,导致不允许异域提交数据,那怕是相同的父域也不允许;


但是因为业务需要,需要在其它平台上,有相同父域的前提下,可以模仿提交数据到论坛中,因为实现提交数据前的种种判断代价不少,且不过分的影响升级后的还原难度;


于是使用在disucz边放弃处理php进行接收,同时移除导致会被disucz拒绝的标志再提交到正常的处理通道中即可有安全保证的绕过限制;同时必须得保证flash提交数据设置成只允许某域访问;


实现方案:

1. crossdomain.xml进行修改,只允许同父域的数据提交

2.异平台提交数据时使用flash来进行跨域,因为这样处理会比较方便浏览器端接受数据时方便性,注意用于提交的flash swf文件必须放置在discuz平台这边,进行远程的引用,才会出现flash的提交url跟论坛相同,但是也可以利用下面提到的php文件进行更改.

3.flash提交到放在discuz同根目录下的php进行某些处理后再转给正常的接收通道;



php标志移除php

<?php
/*
 * 内部绕过某些限制同域名提交数据的跳板:允许flash提交数据(只有ie才有此标志量)
 */
$phps = array('forum', 'group', 'home', 'index', 'member', 'misc');//允许使用的php文件    
if (empty($_GET['php']) or !in_array($_GET['php'], $phps)) exit('参数d错误');
define('DX_ROOT', str_replace("\\", '/', dirname(__FILE__)).'/');
unset($_SERVER['HTTP_X_FLASH_VERSION']);//在ie下会产生此标志量,必须清空才能提交    
require_once (DX_ROOT."{$_GET['php']}.php");