`
chengxianju
  • 浏览: 258016 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

[转载]防御远程表单提交

    博客分类:
  • php
 
阅读更多

防御远程表单提交


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


这种技术是有效的,这是因为在 PHP 中会话数据无法在服务器之间迁移。即使有人获得了您的 PHP 源代码,将它转移到自己的服务器上,并向您的服务器提交信息,您的服务器接收的也只是空的或畸形的会话令牌和原来提供的表单令牌。它们不匹配,远程表单提交就失败了。

分享到:
评论

相关推荐

    js验证表单大全,用JS控制表单提交 ,javascript提交表单

    js验证表单大全,用JS控制表单提交 ,javascript提交表单

    php curl模仿form表单提交图片或文件

    在PHP开发中,有时我们需要模拟用户通过HTML表单提交数据,包括文件和图片。`cURL`库提供了一个强大的功能,允许我们实现这样的任务。在本文中,我们将深入探讨如何使用PHP的cURL库来模仿form表单提交,特别是提交...

    简单的ASP表单提交到后台的源码

    这个“简单的ASP表单提交到后台的源码”示例,很可能是为了教学或实践目的,帮助初学者理解ASP中的表单数据处理流程。 首先,我们需要理解表单(Form)在HTML中的作用。表单是用户与网站交互的重要方式,通过表单,...

    struts1.2 from表单提交包含list的对象

    在Struts1.2中处理表单提交,特别是当表单数据包含列表对象时,需要理解一些核心概念和技术。这篇博客文章可能详细探讨了如何在Struts1.2中处理这类情况。 首先,让我们来了解Struts1.2中的表单提交流程。当用户在...

    弹出层表单提交数据完美解决

    总结来说,实现弹出层表单提交数据完美解决,需要关注表单的设计、数据验证、异步通信、安全性以及用户体验等多个方面。通过合理的HTML结构、CSS样式和JavaScript交互,我们可以创建出用户友好且安全的弹出层表单...

    防止Layui form表单重复提交的实现方法

    在使用Layui设计表单时,经常会遇到表单提交后页面刷新导致的重复提交问题。为了解决这个问题,开发者需要确保表单只提交一次,防止不必要的数据重复处理或者服务器的重复计算。下面详细解释几种防止Layui表单重复...

    asp表单提交源码

    在ASP中,表单提交是网页与服务器间数据交互的关键环节。本文将深入探讨ASP表单提交源码及其相关知识点。 一、ASP表单基础 在HTML中,表单元素(`&lt;form&gt;`)用于收集用户输入的数据。当用户点击提交按钮时,这些...

    layui form表单提交之后重新加载数据表格的方法

    本文将探讨在使用layui框架的情况下,如何在表单提交之后重新加载数据表格。 首先,让我们来分析一下使用的layui组件。Layui是一个前端UI框架,它提供了一套模块化的组件,方便开发者快速开发界面。其中,form模块...

    C#.Net模拟表单提交(源码)

    标签".Net表单提交"表明了这个主题主要关注.NET环境下的表单提交实现。在压缩包文件"HttpService"中,可能包含了一个服务类或示例代码,用于演示如何在C#.Net中实现HTTP服务端的表单数据处理,或者如何模拟客户端的...

    ajax 无刷新实现表单提交

    简单的ajaxt无刷新实现表单提交的实例(myeclipse 直接导入运行) 学习点: 1;ajax无刷新表单提交 2;ajax的运行历程 最简单明了的实例,清晰的帮你弄清上述概念,运行简单,只需解压该包,然后Myeclipse中file - ...

    asp.net mvc3 表单提交和异步提交

    在这个框架中,表单提交和异步提交是两种重要的用户交互方式。本文将深入探讨这两种方法及其在实际开发中的应用。 首先,我们来看传统的表单提交。在ASP.NET MVC3中,表单提交是基于HTTP协议的POST或GET请求。当你...

    C# post方式提交Form表单

    在Form表单提交中,POST方法会将表单数据封装在请求体中发送到服务器,而不是像GET那样将其附加到URL后面。这样可以确保数据的安全性,并且对数据长度没有限制。 二、C#实现POST表单提交的步骤 1. 创建HTTP客户端:...

    简单的表单提交代码

    本资源包含一个简单的表单提交代码实现,适合集成到Java项目中。通过提供的js、css和demo.html文件,我们可以深入理解表单的构建、样式设计以及数据提交的过程。 1. **HTML表单基础** HTML中的`&lt;form&gt;`元素用于...

    javascript方式防止表单重复提交

    // 阻止默认的表单提交行为 var submitButton = document.getElementById('submitButton'); if (!submitButton.disabled) { submitButton.disabled = true; // 提交表单的逻辑 } }); ``` 2. **使用一次性...

    表单提交数据库的程序

    表单提交数据库的程序表单提交数据库的程序表单提交数据库的程序表单提交数据库的程序表单提交数据库的程序

    分类留言系统(表单提交)源代码

    【分类留言系统(表单提交)源代码】是基于ASP技术构建的一款互动性强、功能完善的网络应用,主要用于网站用户之间的信息交流与反馈。ASP(Active Server Pages)是微软开发的一种服务器端脚本语言,用于生成动态...

    迅捷自助表单提交系统

    迅捷自助表单提交系统是一款专门用于数据收集和管理的工具,它允许用户自定义创建各种类型的表单,以满足不同场景下的需求。这个系统在IT行业中被广泛应用,尤其是在数据分析、项目管理、客户服务等领域,因为它提供...

    Js 表单提交验证函数(很全了)

    在JavaScript中,表单提交验证是确保用户输入的数据符合预设规则的重要环节,这有助于防止无效数据的提交,提升用户体验,以及保护服务器免受恶意数据的冲击。本篇将详细介绍JavaScript表单验证函数的一些关键知识点...

    JQuery表单提交和后台交互源码20130509

    JQuery表单提交和后台交互源码 源码描述: jQuery表单提交和后台交互,非常简单。 也许你习惯了使用基于jQuery的表单插件,裸写也不错 仅使用jQuery提交表单和后台交互,不使用基于jQuery的表单插件 方式1、取到...

Global site tag (gtag.js) - Google Analytics