CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  PHP

session的安全?

楼主rosen(考试机器)2001-11-19 19:14:06 在 Web 开发 / PHP 提问

--------------------------------------------------------------------------------  
      我做了一个登陆界面,就是当验证完用户名和密码后,再启用会话.  
  if   (验证完毕)   后  
  session_start();  
  session_register("my_var");  
  然后进入下一界面:  
  <?php  
  if(!(session_is_registered("my_var")))  
  {  
  ?>  
  <html>  
  <head>  
  <meta   http-equiv="refresh"   content="2;URL=../login.php">  
  </head>  
  <body>  
  请先到<a   href="../index.html">首页</a>登录!  
  </body>  
  <?  
  exit();  
  require("abc.html");.  
  这个时候,URL已经是一窜很长的数字了我把这个URL拷贝出来再关IE,接着再打开一个IE把刚才的URL粘贴上去,可是IE还是能打开刚才的*.html.WHY???  
  问题点数:20、回复次数:27Top

1 楼zxyufan(宇凡)回复于 2001-11-19 22:39:21 得分 0

如果没错的话,那个很长的“数字”就是SessionID吧。知道一个客户端是怎样在服务器确定是哪个session文件的吗?Top

2 楼sandj(不了)回复于 2001-11-20 09:10:14 得分 0

这个是我的   session_check.php   感觉还是比较安全的  
  *********************************************  
  <?php  
  session_start();  
  ?>  
  <LINK   HREF="/include/style.css"   REL="stylesheet"   TYPE="text/css">  
  <?php  
  if(!(session_is_registered("USERNAME")))  
  {  
  echo   "<script   lanugage=\"javascript\">\n";  
  echo   "alert   ('对不起,请您首先登录!');\n";  
  echo   "location=\"/\";\n";  
  echo   "</script>";  
  exit();  
  };  
  ?>Top

3 楼necro(寰愭檽鍏)回复于 2001-11-20 10:36:54 得分 0

非常关注Top

4 楼rosen(考试机器)回复于 2001-11-20 12:07:48 得分 0

谢谢sandj(不了)  
  我先试一下。Top

5 楼rosen(考试机器)回复于 2001-11-20 12:52:47 得分 0

还是不行,我是这样做的:  
  首先在登陆页面注册一个SID  
  session_start();  
  session_register("my_var");  
  然后进入check.php代码如下:  
  <LINK   HREF="/include/style.css"   REL="stylesheet"   TYPE="text/css">  
  <?php  
  if(!(session_is_registered("my_var")))  
  {  
  echo   "<script   lanugage=\"javascript\">\n";  
  echo   "alert   ('对不起,请您首先登录!');\n";  
  echo   "location=\"/\";\n";  
  echo   "</script>";  
  exit();  
  }  
  else  
  {echo   "成功登陆";  
  };  
  ?>  
  但是当我把“http://localhost/check.php?PHPSESSID=e477d3728197fcb4bfd61c37409c327b”  
  复制下来,把IE关掉,再另外开一个,把URL粘贴上去,还是写着“成功登陆”。Top

6 楼hbolive(紫月亮)回复于 2001-11-20 14:04:23 得分 0

如果关掉IE,session是会过期的,必须重新登陆。看看你的程序判断流程是否有错??Top

7 楼rosen(考试机器)回复于 2001-11-20 14:13:13 得分 0

请   hbolive(紫月亮)  
  指点!Top

8 楼zxyufan(宇凡)回复于 2001-11-20 14:38:43 得分 0

PHPSESSID  
   
  意思这么明白的一个变量...Top

9 楼zxyufan(宇凡)回复于 2001-11-20 14:40:24 得分 0

你把这个变量的数据传给一个页面,告诉服务器,我要用PHPSESSID指向的session物理文件里的数据。他,他能找不到session的数据吗?Top

10 楼rosen(考试机器)回复于 2001-11-20 14:50:42 得分 0

楼上的老兄,拜托我学PHP才一个多星期。Top

11 楼rosen(考试机器)回复于 2001-11-20 15:05:55 得分 0

老兄,我给你一个URL,那上面说可以用直接调用"PHPSESSID=e477d3728197fcb4bfd61c37409c327b"的。  
   
  http://phpuser.com/tips_and_tricks/detail.php?id=45  
  Top

12 楼zxyufan(宇凡)回复于 2001-11-20 15:08:59 得分 20

嘿嘿~~~php中使用session的原理是就是这样的。服务器就是靠SessionID来确定哪个客户端是用哪个session文件里的数据的。当然这个SessionID可以靠cookie来保存,也可以直接在url中传递。你就是使用了后面这个方式来维持了server和client之间的通信。Top

13 楼rosen(考试机器)回复于 2001-11-20 15:12:21 得分 0

那么说“http://phpuser.com/tips_and_tricks/detail.php?id=45”里面说的肯定是错了?  
  谢谢你的指导。Top

14 楼zxyufan(宇凡)回复于 2001-11-20 15:13:33 得分 0

你到底有没有明白PHPSESSID是什么?  
  那篇文章我看了,跟你说的问题没有关系啊~Top

15 楼rosen(考试机器)回复于 2001-11-20 15:17:04 得分 0

就是服务器与浏览器之间建立的回话。Top

16 楼zxyufan(宇凡)回复于 2001-11-20 15:24:28 得分 0

是会话的标志,确定其一对一的关系。Top

17 楼rosen(考试机器)回复于 2001-11-20 15:30:56 得分 0

前几天才把数据库建好,这才开始接触PHP,所以难免说外行话,请原谅。  
  不过我想搞清楚“http://phpuser.com/tips_and_tricks/detail.php?id=45”和我现在的代码到底有什么区别?  
  我觉得一个只是用的是“echo   "<script   lanugage=\"javascript\">\n";”,而另一个用的是超链接。  
  请斑竹指点。Top

18 楼zxyufan(宇凡)回复于 2001-11-20 15:42:07 得分 0

没有本质上的区别。  
   
  关键是你复制url的时候不能把sessionID也复制下来,因为那样的话新开的ie和你本身那个就没有区别了。你提到的安全性是别人知道url,但是他能知道那么一大长串的sessionID数据吗?只要他猜不到那串字符,他就不能使用那个session里保存的数据呀~Top

19 楼rosen(考试机器)回复于 2001-11-20 15:50:53 得分 0

OK!!!Top

20 楼loveun(皋皋)回复于 2001-11-22 00:10:41 得分 0

to:zxyufan(宇凡)  
   
  你这样说有点误导,如果真想让session失效,可以用session_destroy()函数来结束,  
  那样即使他复制或者刷新也没有用。  
   
  还有点建议,做为斑竹要帮助大家尽量把问题搞清楚,我看你回答很多人的问题都很含糊!  
  (一点建议,希望不要生气)  
  Top

21 楼xtky_limi(窗外细雨)回复于 2001-11-22 12:38:58 得分 0

旁听Top

22 楼munn(印度象)回复于 2001-11-23 22:14:06 得分 0

关注Top

23 楼zxyufan(宇凡)回复于 2001-11-23 23:33:33 得分 0

我每次上线,能答的都答,这个工作两不算小,很多时候并不能很仔细的去思考。而且我并不认为我的回答是含糊的,如果我不确定,我都说明了是“可能的”。  
   
  PS   我没有生气~~另外谢谢你~~Top

24 楼zxyufan(宇凡)回复于 2001-11-23 23:38:10 得分 0

另外对于这个帖子涉及的问题,我说的是“问题所在”,你说的是“解决办法”。我想并不存在误导的问题。很多时候我并不想“一语道破天机”,特别是对新手,仅仅告诉他们错在什么地方,可以参考什么样的方法去解决,甚至连解决方法都不一定说。目的是为了留出让他们自己思考的空间,不然怎么才能让他们提高呢?Top

25 楼mrmengyi(miaomiao)回复于 2001-12-08 17:20:11 得分 0

我也有类似的困惑  
  在IE关闭时Session文件(服务器上的)并没有被删除  
  需要在脚本中执行session_destory()  
  why?  
   
  ASP就不用  
  是不是因为用的是CGI方式?Top

26 楼mrmengyi(miaomiao)回复于 2001-12-10 15:14:28 得分 0

你的sessionID用的是url传递的  
  这样可以防止客户机不支持cookie的情况  
  服务器上的session存储是有时间限制的  
  安全你不用担心  
  用session_destory可以显式的把服务器上的session文件删除Top

相关问题

  • SOS! php的session安全性。
  • 讨论Session的安全性
  • 使用Session安全吗?
  • session验证登陆安全吗?
  • web安全,session有域的概念吗?
  • 请教, 关于session安全的问题! 分数多多!
  • session 和 cookie 客户都能看到,所以不安全
  • 用session校验登录用户是否安全?
  • 怎么注册的SESSION变里,还可以这样用!是不是不安全!
  • 网站后台身份验证:Session+Cookie双重验证的安全性

关键词

得分解答快速导航

  • 帖主:rosen
  • zxyufan

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo