最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
PHP防止远程非法提交表单程序代码
时间:2022-06-24 15:52:58 编辑:袖梨 来源:一聚教程网
具体方法
一、PHP防止站外提交数据的方法
代码如下 | 复制代码 |
$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; } ?> |
把以上代码放到需要防止外部提交数据的页面中,如果是直接输入网址或者是从外部网部链接到本页,则显示:警告!你正在从外部提交数据!!请立即终止!!;如果系从本站链接或通过表单提交到该页,则无此提示。这样做主要是为了防止一些伪造表单向站内提交数据 。
上面的代码通过curl可直接跳过了,我们可以参考dz论坛登录的一种做法
处理远程表单提交更好的方式是,根据一个惟一的字符串或时间戳生成一个令牌,并将这个令牌放在会话变量和表单中。提交表单之后,检查两个令牌是否匹配。如果不匹配,就知道有人试图从表单的远程副本发送数据。
要创建随机的令牌,可以使用 PHP 内置的 md5()、uniqid() 和 rand() 函数,如下所示
代码如下 | 复制代码 |
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; } ?> |
没事把以前写的asp写出来
ASP防止外部提交数据的方法
代码如下 | 复制代码 |
<% 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 %> |
相关文章
- 《无限暖暖》天星之羽获得位置介绍 12-20
- 《流放之路2》重铸台解锁方法介绍 12-20
- 《无限暖暖》瞄准那个亮亮的成就怎么做 12-20
- 《无限暖暖》魔气怪终结者完成方法 12-20
- 《无限暖暖》曙光毛团获得位置介绍 12-20
- 《无限暖暖》日光果获得位置介绍 12-20