php hash防止表单

<?php

/**
 * Created by PhpStorm.
 * User: brady
 * Desc:
 * Date: 2017/7/12
 * Time: 15:01
 */
class test extends MY_Controller
{
    public function __construct()
    {
        parent::__construct();
    }

    public function index()
    {
        //防csrf攻击
        $hash = md5(uniqid(rand(), TRUE));
        set_cookie("__hash__", $hash, 3600, get_public_domain());
        $this->_viewData[‘__hash__‘] = $hash;
        parent::index();
    }

    public function do_submit()
    {
        $data = $this->input->post();
        if(empty($data[‘__hash__‘])){
            echo "hacker";
        }
        echo $cookie_hash = get_cookie(‘__hash__‘);

        if($cookie_hash === $data[‘__hash__‘]) {
            echo "验证通过";
            delete_cookie("__hash__",get_public_domain());
            dump($_COOKIE);
        } else {
            echo "hacker";
        }

    }
}

  

时间: 2024-10-27 10:22:48

php hash防止表单的相关文章

html5表单和伪类

type = "email"; 自带验证格式type = "url"; 网址 http//:type = "tel";移动端会变成数字键盘type = "search";输入的时候多出x ,适合移动端type = "range"; min="最小值" max = "最大值" step = "跳动" value = "当前值";数

ZendFramework2学习笔记 表单过滤、表单验证

ZF2有很多内建的Filter和Validator组件,可以方便地对表单数据进行处理. Filter的作用是过滤表单数据,例如,去除一些空格,替换一些敏感词等. Validator的作用是检验表单数据是否合规,如果不合规,则提供不合规原因的文本消息. 假设有这样一个Form: 表单数据存储到数据库之前的要求是: 用户名:过滤左右空格,字符都转换为小写,只能是由数字和字母字符组成,长度限制,数据库必须不存在该用户名. 密码:密码1和密码2必须相同,长度限制. 邮箱:必须符合密码格式,加密存储,长度

Spring Security应用开发(05)自定义表单认证

Spring Security自动产生的登录页面非常简陋,但是Spring Security提供了丰富的自定义功能. 1.1.1. 密码摘要处理 数据库中的密码字段可以使用SHA摘要算法处理后再保存,而不是以明文保存. mysql> select * from users; +----------+----------+---------+ | username | password | enabled | +----------+----------+---------+ | lisi | 1

jquery validate强大的jquery表单验证插件

jquery.validate.js使用之自定义表单验证规则 //邮箱 表单验证规则 jQuery.validator.addMethod("mail", function (value, element) { var mail = /^[a-z0-9._%-][email protected]([a-z0-9-]+\.)+[a-z]{2,4}$/; return this.optional(element) || (mail.test(value)); }, "邮箱格式不对

关于js中的表单事件

表单结构如下所示: <form > <input type="text" name="txt" id="txt" value="" /> <input type="submit" name="sub" id="sub" value="提交" /> <input type="button"

asp.net forms 表单验证 实现跨域共享cookie(即SSO,单点登录(在二级域名下))

1.前提: 需要做一个单点登录,使用asp.net自带的表单验证(FormsAuthentication) 配置文件怎么写,如下(基本的): <authentication mode="Forms"> <forms loginUrl="~/user/login" enableCrossAppRedirects="true" timeout="3600" name="qz.bbs" cook

yii 使用cactiveform 创建表单时候遇到的一些验证问题和使用ajax_form时重置验证规则的解决办法

yii  cactiveform 在添加验证信息的时候, 有时候稍有不慎,可能导致客户端验证不起作用,尤其是像我这种初学者来说,更是无解了, 好在今天有点时间, 一路追查这个问题,最后从js 端一直追到了php中, 终于找到了罪魁祸首,原来还是我们自己,哈哈  接下来就简单分享一下: 首先让我们来看看所有的客户端js验证是怎么添加上去的: 在CActiveForm.php :383行 中有这么一句话: $options=CJavaScript::encode($options); $cs->re

第二章:表单和模板

在第一章中,我们学习了使用Tornado创建一个Web应用的基础知识.包括处理函数.HTTP方法以及Tornado框架的总体结构.在这章中,我们将学习一些你在创建Web应用时经常会用到的更强大的功能. 和大多数Web框架一样,Tornado的一个重要目标就是帮助你更快地编写程序,尽可能整洁地复用更多的代码.尽管Tornado足够灵活,可以使用几乎所有Python支持的模板语言,Tornado自身也提供了一个轻量级.快速并且灵活的模板语言在tornado.template模块中. 2.1 简单示例

【Python全栈-后端开发】Django进阶2-Form表单

Django进阶2-Form表单 Django的Form主要具有一下几大功能: 生成HTML标签(可以保留上次输入内容) 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 一.小试牛刀 1.创建Form类 在app01 文件夹下-->创建新的.py 文件 from django.forms import Form from django.forms import widgets from django.forms import fields class M