PHP防止跨域提交表单

在写用户注册的时候,一定要主要你的表单是否可以跨域提交.
php中解决的方法:
1.除了在页面做好表但验证之外,还要在提交的服务段的数据进行验证。
验证的主要代码如下:
复制代码 代码如下:
 
$servername=$_SERVER[‘SERVER_NAME’];//当前运行脚本所在服务器主机的名字。
  $sub_from=$_SERVER[“HTTP_REFERER”];//链接到当前页面的前一页面的
URL 地址
  $sub_len=strlen($servername);//统计服务器的名字长度。
 
$checkfrom=substr($sub_from,7,$sub_len);//截取提交到前一页面的url,不包含http:://的部分。

java怎么防止跨域提交表单
如我原来的form是

1.使用post提交方式
2.构造表单的数格式
3.结合form表单的submit调用ajax的回调函数。
使用 jQuery 异步提交表单代码:

具体方法

  if($checkfrom!=$servername){
   $msg=”数据来源有误!请从本站提交!”;
   $this->redirect(“m_index/reg”,$msg);
   exit;
  }

文件路径是

复制代码 代码如下:

一、PHP防止站外提交数据的方法

2.本站关闭注册,使用像信浪微博,腾讯等开发平台登陆。
3.在apache 中配置hostlookups 参数。这个是以消耗性能为前提的。

<html xmlns=”;
<head>
<title>无标题页</title>
</head>
<script src=”js/jquery-1.4.2.js”></script>
<script>
jQuery(function($) {
// 使用 jQuery 异步提交表单
$(‘#f1’).submit(function() {
$.ajax({
url: ‘ta.aspx’,
data: $(‘#f1’).serialize(),
type: “post”,
cache : false,
success: function(data)
{alert(data);}
});
return false;
});
});
</script>
<body>
<form id=”f1″ name=”f1″>
<input name=”a1″ />
<input name=”a2″ />
<input id=”File1″ type=”file” name=”File1″/>
<input id=”Submit1″ type=”submit” value=”submit” />
</form>
</body>
</html>

 代码如下

怎么防止别人做一个html文件提交到我的aaa.jsp呢?如:

如何异步跨域提交表单呢?
1.利用script
的跨域访问特性,结合form表单的数据格式化,所以只能采用get方式提交,为了安全,浏览器是不支持post跨域提交的。
2.采用JSONP跨域提交表单是比较好的解决方案。
3.也可以动态程序做一代理。用代理中转跨域请求。
使用 jQuery 异步跨域提交表单代码:

<?
$servername=$HTTP_SERVER_VARS[‘SERVER_NAME’];
$sub_from=$HTTP_SERVER_VARS[“HTTP_REFERER”];
$sub_len=strlen($servername);
$checkfrom=substr($sub_from,7,$sub_len);
if($checkfrom!=$servername){
echo(“警告!你正在从外部提交数据!!请立即终止!!”);
exit;
}
?>

那么请问 我怎么在我的aaa.do里面 判断对方发送这个表单的域名呢?

复制代码 代码如下:

把以上代码放到需要防止外部提交数据的页面中,如果是直接输入网址或者是从外部网部链接到本页,则显示:警告!你正在从外部提交数据!!请立即终止!!;如果系从本站链接或通过表单提交到该页,则无此提示。这样做主要是为了防止一些伪造表单向站内提交数据

主要是怎么得到?
我用request.getRemoteHost() 只得到了 对方的IP

<html xmlns=”;
<head>
<title>无标题页</title>
</head>
<script src=”js/jquery-1.4.2.js”></script>
<script>
jQuery(function($)
{
// 使用 jQuery 异步跨域提交表单
$(‘#f1’).submit(function()
{
$.getJSON(“ta.aspx?”+$(‘#f1’).serialize()+”&jsoncallback=?”,
function(data)
{
alert(data);
});
return false;
});
});
</script>
<body>
<form id=”f1″ name=”f1″>
<input name=”a1″ />
<input name=”a2″ />
<input id=”File1″ type=”file” name=”File1″/>
<input id=”Submit1″ type=”submit” value=”submit” />
</form>
</body>
</html>

上面的代码通过curl可直接跳过了,我们可以参考dz论坛登录的一种做法

求一方法得到对方提交表单时的域名。

2.构造表单的数格式
3.结合form表单的submit调用ajax的回调函数。 使用 jQuery
异步提交表单代码: 复制代码 代码如下: html…

处理远程表单提交更好的方式是,根据一个惟一的字符串或时间戳生成一个令牌,并将这个令牌放在会话变量和表单中。提交表单之后,检查两个令牌是否匹配。如果不匹配,就知道有人试图从表单的远程副本发送数据。

谢谢 急用啊
[b]问题补充:[/b]
谢谢 我是用struts2做的程序

要创建随机的令牌,可以使用 PHP 内置的 md5()、uniqid() 和 rand()
函数,如下所示

不过token好像能防重复提交form

 

但是还是不能防止 别人跨域提交啊

 代码如下

我写form用了token 别人模拟的时候也能用啊
[b]问题补充:[/b]
我token 用的确实不太明白

<SPAN style=”FONT-SIZE: small”><?php
session_start();   
       
if ($_POST[‘submit’] == “go”){   
    //check token   
    if ($_POST[‘token’] == $_SESSION[‘token’]){   
        //strip_tags   
        $name = strip_tags($_POST[‘name’]);   
        $name = substr($name,0,40);   
        //clean out any potential hexadecimal characters   
        $name = cleanHex($name);   
        //continue processing….   
    }else{   
        //stop all processing! remote form posting attempt!   
    }   
}   
       
$token = md5(uniqid(rand(), true));   
$_SESSION[‘token’]= $token;   
       
       
function cleanHex($input){   
    $clean = preg_replace(“![][xX]([A-Fa-f0-9]{1,3})!”,
“”,$input);   
    return $clean;   
}   
?>   
       
       
<form action=”<?php echo $_SERVER[‘PHP_SELF’];?>”
method=”post”>   
<p><label for=”name”>Name</label>   
<input type=”text” name=”name” id=”name” size=”20″
maxlength=”40″/></p>   
<input type=”hidden” name=”token” value=”<?php echo
$token;?>”/>   
<p><input type=”submit” name=”submit”
value=”go”/></p>   
</form>   </SPAN>

摆脱那个大哥 给个 例子

没事把以前写的asp写出来

form 怎么写

ASP防止外部提交数据的方法

action中怎么写

 代码如下

config要配什么啊

<%
Server_v1=Cstr(Request.ServerVariables(“HTTP_REFERER”))
Server_v2=Cstr(Request.ServerVariables(“SERVER_NAME”))
If   mid(server_v1,8,len(server_v2))<>server_v2   then
     Response.write “警告!你正在从外部提交数据!!请立即终止!!”
     Response.End
End if
%>

在网上找了半天 都写的很模糊

发表评论

电子邮件地址不会被公开。 必填项已用*标注