session的安全?

rosen 2001-11-19 07:14:06
--------------------------------------------------------------------------------
我做了一个登陆界面,就是当验证完用户名和密码后,再启用会话.
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???
...全文
1387 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrmengyi 2001-12-10
  • 打赏
  • 举报
回复
你的sessionID用的是url传递的
这样可以防止客户机不支持cookie的情况
服务器上的session存储是有时间限制的
安全你不用担心
用session_destory可以显式的把服务器上的session文件删除
mrmengyi 2001-12-08
  • 打赏
  • 举报
回复
我也有类似的困惑
在IE关闭时Session文件(服务器上的)并没有被删除
需要在脚本中执行session_destory()
why?

ASP就不用
是不是因为用的是CGI方式?
zxyufan 2001-11-23
  • 打赏
  • 举报
回复
另外对于这个帖子涉及的问题,我说的是“问题所在”,你说的是“解决办法”。我想并不存在误导的问题。很多时候我并不想“一语道破天机”,特别是对新手,仅仅告诉他们错在什么地方,可以参考什么样的方法去解决,甚至连解决方法都不一定说。目的是为了留出让他们自己思考的空间,不然怎么才能让他们提高呢?
zxyufan 2001-11-23
  • 打赏
  • 举报
回复
我每次上线,能答的都答,这个工作两不算小,很多时候并不能很仔细的去思考。而且我并不认为我的回答是含糊的,如果我不确定,我都说明了是“可能的”。

PS 我没有生气~~另外谢谢你~~
munn 2001-11-23
  • 打赏
  • 举报
回复
关注
xtky_limi 2001-11-22
  • 打赏
  • 举报
回复
旁听
loveun 2001-11-22
  • 打赏
  • 举报
回复
to:zxyufan(宇凡)

你这样说有点误导,如果真想让session失效,可以用session_destroy()函数来结束,
那样即使他复制或者刷新也没有用。

还有点建议,做为斑竹要帮助大家尽量把问题搞清楚,我看你回答很多人的问题都很含糊!
(一点建议,希望不要生气)
rosen 2001-11-20
  • 打赏
  • 举报
回复
还是不行,我是这样做的:
首先在登陆页面注册一个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粘贴上去,还是写着“成功登陆”。
rosen 2001-11-20
  • 打赏
  • 举报
回复
谢谢sandj(不了)
我先试一下。
necro 2001-11-20
  • 打赏
  • 举报
回复
非常关注
sandj 2001-11-20
  • 打赏
  • 举报
回复
这个是我的 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();
};
?>
rosen 2001-11-20
  • 打赏
  • 举报
回复
OK!!!
zxyufan 2001-11-20
  • 打赏
  • 举报
回复
没有本质上的区别。

关键是你复制url的时候不能把sessionID也复制下来,因为那样的话新开的ie和你本身那个就没有区别了。你提到的安全性是别人知道url,但是他能知道那么一大长串的sessionID数据吗?只要他猜不到那串字符,他就不能使用那个session里保存的数据呀~
rosen 2001-11-20
  • 打赏
  • 举报
回复
前几天才把数据库建好,这才开始接触PHP,所以难免说外行话,请原谅。
不过我想搞清楚“http://phpuser.com/tips_and_tricks/detail.php?id=45”和我现在的代码到底有什么区别?
我觉得一个只是用的是“echo "<script lanugage=\"javascript\">\n";”,而另一个用的是超链接。
请斑竹指点。
zxyufan 2001-11-20
  • 打赏
  • 举报
回复
是会话的标志,确定其一对一的关系。
rosen 2001-11-20
  • 打赏
  • 举报
回复
就是服务器与浏览器之间建立的回话。
zxyufan 2001-11-20
  • 打赏
  • 举报
回复
你到底有没有明白PHPSESSID是什么?
那篇文章我看了,跟你说的问题没有关系啊~
rosen 2001-11-20
  • 打赏
  • 举报
回复
那么说“http://phpuser.com/tips_and_tricks/detail.php?id=45”里面说的肯定是错了?
谢谢你的指导。
zxyufan 2001-11-20
  • 打赏
  • 举报
回复
嘿嘿~~~php中使用session的原理是就是这样的。服务器就是靠SessionID来确定哪个客户端是用哪个session文件里的数据的。当然这个SessionID可以靠cookie来保存,也可以直接在url中传递。你就是使用了后面这个方式来维持了server和client之间的通信。
rosen 2001-11-20
  • 打赏
  • 举报
回复
老兄,我给你一个URL,那上面说可以用直接调用"PHPSESSID=e477d3728197fcb4bfd61c37409c327b"的。

http://phpuser.com/tips_and_tricks/detail.php?id=45
加载更多回复(6)

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧