`
swengineer
  • 浏览: 42392 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PHP之Token应用

    博客分类:
  • PHP
阅读更多
<?php
/**
 * Token
 * 
 * 令牌类,避免CSFR/XSFR、会话劫持、固定攻击、表单伪造攻击等。
 * 使用方法:
 * 1.提交页面获取Token,并赋值到隐藏域中,获取Token代码如下:
 * 		$token_value = Utils_Token::getInstance()->gen_token();
 * 2.提交后在Action页面验证Token,根据返回值进行相应页面处理,验证代码如下:
 * 		$isValid = Utils_Token::getInstance()->validate($token_value);
 * 3.验证失败也可直接指定跳转URL如:
 * 		Utils_Token::getInstance()->validate($token_value,'http://xx.xxx.com')
 * 
 * @package Utils
 * @author 张东宇
 * @version 1.0
 * @example
 * 		$token_value = Utils_Token::getInstance()->gen_token(); //获取Token
 *		echo 'TOKEN_VALUE:'.$token_value.'<br>';				//打印Token
 *		$checkValue = Utils_Token::getInstance()->validate($token_value);//验证令牌
 *		echo $checkValue;//验证结果:1-成功 0-失败
 * 
 */
class Utils_Token {
	const TOKEN_NAME = 'TOKEN'; // 令牌名
	private static $instance; // 类实例
	private function __construct() { // 构造函数
	}
	/**
	 * 获取令牌类实例
	 *
	 * @access public
	 * @return Token Utils_Token 实例
	 */
	public static function getInstance() {
		if (! isset ( $_SESSION ))
			session_start ();
		if (! isset ( self::$instance ))
			return new Utils_Token ();
		else
			return self::$instance;
	}
	
	/**
	 * 生成令牌,供表单或其他业务逻辑使用
	 *
	 * @access public
	 * @return string 令牌值
	 */
	public function gen_token() {
		$hash = md5 ( uniqid ( rand () . 'WXT', true ) );
		$n = rand ( 0, 24 );
		$token = substr ( $hash, $n, 8 );
		$this->_tokenValue = $token;
		$this->destroy_token ();
		$_SESSION [self::TOKEN_NAME] = $this->_tokenValue;
		return $token;
	}
	
	/**
	 * 销毁令牌
	 *
	 * @access private
	 * @return void
	 */
	private function destroy_token() {
		if ($_SESSION [self::TOKEN_NAME])
			unset ( $_SESSION [self::TOKEN_NAME] );
	}
	
	/**
	 * 检测令牌是否有效
	 *
	 * @access public
	 * @param string $token
	 *        	令牌值
	 * @param string $url
	 *        	校验失败跳转URL
	 * @return boolean 1-校验成功 0-校验失败
     *
	 */
	public function validate($token, $url = '') {
		if ($token == $_SESSION [self::TOKEN_NAME]) {
			$this->destroy_token ();
			return 1;
		} elseif ($url) {
			$this->destroy_token ();
			Header ( "Location: $url" );
		} else {
			$this->destroy_token ();
			return 0;
		}
	}
}
/*
$token_value = Utils_Token::getInstance()->gen_token(); //获取Token
echo 'TOKEN_VALUE:'.$token_value.'<br>';				//打印Token
$checkValue = Utils_Token::getInstance()->validate($token_value);//验证令牌
echo $checkValue;//验证结果:1-成功 0-失败
*/

 

1
1
分享到:
评论

相关推荐

    access_token验证过期类

    在IT行业中,特别是涉及到Web应用开发,`access_token`是一个非常关键的概念,它涉及到用户授权、安全性和API接口管理等多个方面。`access_token`验证过期类是为了解决这个问题而设计的一种机制,确保应用程序能够...

    微信小程序url与token设置详解

    新浪云应用sae的代码里创建一个weixin.php文件,写入以下代码 define(TOKEN,myToken);// 后台填写的token,在微信公众平台启用 $wechatObj = new wechatAPI(); $wechatObj-&gt;isValid(); class wechatAPI { public ...

    微信企业号php验证token接口

    回调模式是微信企业号的一种安全机制,当微信服务器接收到企业号应用的请求时,会先进行token验证,只有验证通过后才会将请求转发到开发者设定的回调URL。这样可以防止中间人攻击,确保请求来源的真实性。 2. **...

    创建带时间戳的session值,以及设置token

    在Web开发中,Session和Token是两种常见的身份...总之,Session和Token是Web应用中保证用户安全的重要手段,添加时间戳可以增强其安全性,防止被恶意利用。理解并正确实现这两个概念对于任何Web开发者都是至关重要的。

    PHP token验证生成原理实例分析

    总结来说,PHP中的Token验证是一个关键的安全措施,通过生成和验证随机字符串,确保请求的合法性,从而保护Web应用程序免受CSRF攻击。开发者在实现Token验证时,应考虑到时效性、一次性以及与服务器端数据的匹配,...

    一次搞明白 Session、Cookie、Token,面试问题全搞定.pdf

    在标签"面试 php session cookie token"中,我们看到提到了PHP语言,这暗示文档可能会涉及PHP在处理Session和Cookie时的特定细节,同时也会讲述Token的使用,这通常与OAuth、JWT(JSON Web Tokens)等认证机制相关。...

    七牛上传图片获取token前后台

    总结来说,"七牛上传图片获取token前后台JS+C#"项目涵盖了前端图片选择与上传、后端Token生成、七牛云服务的使用等多个方面,是Web开发中常见的图片存储和处理应用场景。理解并掌握这些知识点,对于构建类似功能的...

    PHP版本钉钉ISV应用Demo

    PHP代码会引导用户跳转至钉钉授权页面,用户同意授权后,钉钉会返回一个access_token,开发者可以用此token进行后续的API调用。 ### 5. API调用与响应处理 在PHP中,开发者可以利用封装好的库来调用钉钉API,如...

    七牛云上传图片案例 token可以网上在线生成

    在IT行业中,七牛云作为一个领先的云计算服务提供商,其服务广泛应用于数据存储、内容分发、多媒体处理等领域。本文将详细讲解如何利用七牛云进行图片上传,并关注`token`的在线生成及其与`qiniu.js`版本的关系。...

    PHP使用token防止表单重复提交的方法

    在网页开发中,表单重复提交是一个常见的问题,可能导致数据的不一致性或处理逻辑的混乱。为了解决这个问题,PHP 提供了一种基于 ...同时,对于开发者来说,理解并正确使用 token 机制是构建健壮 Web 应用的关键之一。

    vue+tp5+token.zip

    在现代Web开发中,安全性和用户体验是至关重要的因素。Vue.js和ThinkPHP...理解并正确实施这些概念对于构建安全的前后端分离应用至关重要。在实际项目中,还应结合具体的业务需求和安全规范进行相应的调整和优化。

    php token使用与验证示例【测试可用】 原创

    在PHP开发中,为了增强应用程序的安全性,常常会使用到Token技术。Token是一种验证机制,用于防止跨站请求伪造(Cross-Site Request Forgery, CSRF)攻击和非法的数据提交。本文将详细介绍PHP中Token的使用及其验证...

    Laravel开发-laravel_access_token

    在Laravel框架中,`access_token`通常指的是用于授权的OAuth2访问令牌,它是API安全性和身份验证的核心组件。OAuth2是一种授权框架,允许第三方应用在用户授权的情况下访问其受保护的资源,而无需获取用户的用户名和...

    Laravel开发-token-verification

    `Laravel 开发 - token-verification` 提供了一个方便的工具来管理和处理这一过程。让我们深入探讨这个主题,了解如何在 Laravel 中实施令牌验证。 ### CSRF 介绍 CSRF(Cross-Site Request Forgery,跨站请求伪造...

    php token使用与验证示例【测试可用】 <font color=red>原创</font>

    通过本文的介绍,我们了解到了PHP Token验证的原理和实践方法,这不仅可以帮助开发者构建更加安全的Web应用,还能够增强开发者对于PHP语言安全编程的认识,提升编程实践中的安全性意识。在实际开发中,通过引入Token...

    豆瓣API php应用

    2. **OAuth授权**: 豆瓣API使用OAuth 2.0协议进行身份验证和授权,开发者需要注册应用并获取Client ID和Client Secret,然后引导用户授权,获取Access Token,以便安全地访问用户的数据。 3. **PHP基础**: 在使用...

    Laravel开发-token

    在Laravel框架中,令牌(Token)是一种常见的用于安全验证的技术,它广泛应用于API认证、CSRF防护以及无状态Web应用的身份验证等场景。本文将深入探讨Laravel中令牌的生成与使用,以及如何在实际开发中充分利用这个...

Global site tag (gtag.js) - Google Analytics