php跨站攻击实例分析


Posted in PHP onOctober 28, 2014

本文实例讲述了php跨站攻击的原理与防范技巧。分享给大家供大家参考。具体方法分析如下:

跨站攻击就是利用程序上的一些细节或bug问题进行的,那么我们要如何耿防止跨站攻击呢?下面就以一个防止跨站攻击例子来说明,希望对各位有帮助。

<?php

#demo for prevent csrf

/**

* enc

*/

function encrypt($token_time) {

return md5('!@##$@$$#%43' . $token_time);

}

$token_time = time();

$token = encrypt($token_time);

$expire_time = 10;

if ($_POST) {

$_token_time = $_POST['token_time'];

$_token = $_POST['token'];

if ((time() ? $_token_time) > $expire_time) {

echo “expired token”;

echo “<br />”;

}

echo $_token;

echo “<br />”;

$_token_real = encrypt($_token_time);

echo $_token_real;

//compare $_token and $_token_real

}

?>

<!DOCTYPE html>

<html>

<head>

<meta http-equiv=”content-type” content=”text/html; charset=utf-8″ />

<title>test for csrf</title>

<meta http-equiv=”" content=”" />

</head>

<body>

<form method=”post” action=”">

<input type=”text” name=”text” id=”" value=”hello” />

<input type=”hidden” name=”token” id=”" value=”<?php echo $token ?>” />

<input type=”hidden” name=”token_time” id=”" value=”<?php echo $token_time ?>” />

<input type=”submit” name=”submit” id=”" value=”submit” />

</form>

</body>

</html>

 
通过在你的表单中包括验证码,你事实上已经消除了跨站请求伪造攻击的风险。可以在任何需要执行操作的任何表单中使用这个流程
当然,将token 存储到session更好,这里只是简单示例下

简单分析:

token防攻击也叫作令牌,我们在用户访问页面时就生成了一个随机的token保存session与表单了,用户提交时如果我们获取到的token与session不一样就可以提交重新输入提交数据了

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP的FTP学习(三)
Oct 09 PHP
PHP脚本数据库功能详解(上)
Oct 09 PHP
Mysql数据库操作类( 1127版,提供源码下载 )
Dec 02 PHP
ThinkPHP采用模块和操作分析
Apr 18 PHP
PHP获取和操作配置文件php.ini的几个函数介绍
Jun 24 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
PHP实现支持SSL连接的SMTP邮件发送类
Mar 05 PHP
PHP封装的数据库保存session功能类
Jul 11 PHP
浅谈php fopen下载远程文件的函数
Nov 18 PHP
PHP设计模式之单例模式定义与用法分析
Mar 26 PHP
laravel框架学习笔记之组件化开发实现方法
Feb 01 PHP
PHP 实现链式操作
Mar 09 PHP
php获取根域名方法汇总
Oct 28 #PHP
3款值得推荐的微信开发开源框架
Oct 28 #PHP
smarty中英文多编码字符截取乱码问题解决方法
Oct 28 #PHP
smarty中js的调用方法示例
Oct 27 #PHP
Smarty中常用变量操作符汇总
Oct 27 #PHP
Smarty中调用FCKeditor的方法
Oct 27 #PHP
smarty简单分页的实现方法
Oct 27 #PHP
You might like
YII使用url组件美化管理的方法
2015/12/28 PHP
Yii实现简单分页的方法
2016/04/29 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
一个js拖拽的效果类和dom-drag.js浅析
2010/07/17 Javascript
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
javascript制作坦克大战全纪录(2)
2014/11/27 Javascript
Bootstrap基本插件学习笔记之标签切换(17)
2016/12/08 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
layui table 参数设置方法
2018/08/14 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
python中List的sort方法指南
2014/09/01 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
读取本地json文件,解析json(实例讲解)
2017/12/06 Python
python中正则表达式 re.findall 用法
2018/10/23 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
让Python脚本暂停执行的几种方法(小结)
2019/07/11 Python
Python单元测试模块doctest的具体使用
2020/02/10 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
Python将list元素转存为CSV文件的实现
2020/11/16 Python
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
Ajax主要包含了哪些技术
2014/06/12 面试题
20年同学聚会感言
2014/02/03 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书