本文实例讲述了php防止站外远程提交表单的方法,分享给大家供大家参考。具体实现方法如下:

一般来说防止站外提交表单无非就是对每一次打开表单或提交数据都会需要加一个token来进行验证了,这个其实与验证码做法没什么两样了,下面来看几个防止站外远程提交表单的例子。

例子一:我们每一次打开提交页面生成一个token然后保存在session中,当表单提交时我们来判断当前的token值与session是否一致,如果是的就是正常提交否则就是无效提交了。

具体代码如下:

<?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>

还有一种比较明显的做法就是利用验证码了,这种验证码的方式与其它的方式是一样的哦,下面看个简单的例子

例子二:增加验证码

表单提交时候增加验证码,可以有效防止灌水机提交数据。但是随着图形图像识别程序变的更加强大,验证码识别也不断的在提高他的难度,有些验证码甚至加入了声音的识别,一些小站点可以采用这样的方式。

if($_POST['vcode'] != get_vcode())
{
    exit('验证码校验失败,无法入库');
}

还有一些其他的做法

<? 
$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; 

?>

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

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

转载于:https://www.cnblogs.com/warmsun/p/6524024.html

PHP安全,防止远程非法提交相关推荐

  1. IntelliJ IDEA切换Git远程分支 提交代码 拉取最新代码

    前言:众所周知Git用命令提交代码比较繁琐,而且还得记住命令,那如何让我们更加方便的提交代码呢 以及获取最新内容拉到本地 还有更换你要提交到的分支呢 下面废话不多说. 目录 IDEA里切换Git分支 ...

  2. git删除远程分支提交记录(reset回去然后强推)

    项目中遇到这么一个问题,git上创建了一个新项目,并且push2条修改到远程分支:但是发现注释是有问题的,想修改:其实这时候想直接删除项目重新创建,但是owner不是我,没有权限,所以这里通过git删 ...

  3. git 查看远程分支提交信息,不合并

    1.首先查看远程分支: git branch -r 2.使用fetch命令,将远程分支拉下来(不更新) git fetch origin master 3.切换到远程分支 git checkout o ...

  4. php修改隐藏域非法提交,PHP get、post变量放在表单隐藏域示例

    搜索热词 form里可以防止隐藏控件hidden,用来防止那些不希望让用户看到的信息,这个类可以把get和post里的变量放到hidden控件里,不用在单独遍历get和post了,PHP把get.po ...

  5. 怎么使用Git远程删除某个历史提交记录

    这篇文章主要介绍"怎么使用Git远程删除某个历史提交记录"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么使用Git远程删除某个 ...

  6. php表单安全,php表单提交程序的安全使用方法

    用于显示错误信息和成功信息,其实也可以直接echo出错误信息,这里我只是想我的出错信息页面漂亮点,定义了一个页面输出的函数罢了. // savecomment.php// 大家先不要看注释,看完本文后 ...

  7. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

  8. 【Flask项目】项目准备之-创建gitee账户、远程仓库以及pycharm中创建项目

    1.创建远程仓库 1.下载和安装GIT https://git-scm.com/download/win 2.创建远程仓库 登陆注册Githubhttps://github.com/ 或者登录注册码云 ...

  9. 如何将IDEA文件提交至Gitee仓库

    目录 Gitee IDEA 创建本地仓库 连接远程仓库 提交 准备:拥有一个Gitee账户并已安装IDEA.Git Gitee 1.登录Gitee,在页面右上角➕处新建一个仓库 2.仓库名可以任意填写 ...

最新文章

  1. VMware虚拟化--ESXi安装时考虑因素
  2. 想了解Sleuth+zipkin分布式请求链路追踪,来看看这篇文章吧!
  3. mono for android 使用Tab 控件
  4. [转]redis 5.0.5 5分钟搭建redis集群
  5. oracle 28000错误码,Oracle数据库 ORA-28000 错误处理方式
  6. 用Lightroom Classic CC2019 mac合并照片以创建全景和HDR全景
  7. #pragma comment使用
  8. java 操作rtsp/rtmp视频流生成
  9. uniapp 微信授权 登陆
  10. 两种异步时钟同步化区别分析
  11. UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。
  12. 宿骆氏亭寄怀崔雍崔衮
  13. 线速 包转发率 吞吐率
  14. AI面相测试源码 AI面相手相大师小程序源码 最新版微信小程序源码
  15. ubuntu16.04安装GTX-960M nvidia-384驱动
  16. win7下载python3.7.4_Python for windows 下载
  17. H5游戏开发:一笔画
  18. js中valueOf方法的使用
  19. RISC-V— 架构基础知识学习
  20. linux下串口gps应用

热门文章

  1. linux超过cpu负载重启脚本,linux下Web服务器CPU负载超过阀值自动重启脚本
  2. Oracle统计大小语句(用户、表、分区表、索引等)
  3. Linux(Ubuntu)如何安装常用软件(chrome、输入法、远程桌面)
  4. c语言如何求一个数学表达式的值,浅谈C语言中表达式的求值
  5. linux主机中util啥意思,util-linux是什么软件
  6. C语言读取大文件的问题 内存映射
  7. Java二十三设计模式之------迭代子模式
  8. React系列——React Fiber 架构介绍资料汇总(翻译+中文资料)
  9. 试验一下纯手写blog
  10. 用Web Developer工具栏发现SEO问题的方法