佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 960|回复: 10

php的sessions

[复制链接]
发表于 8-12-2007 08:12 PM | 显示全部楼层 |阅读模式
sessions 的 var
如 $_SESSIONS 和 $HTTP_SESSIONS_VAR

其实需要去protect它的variable的吗?
如果要protect要怎么样
detect它被人尝试get variables或者改variables的,然后给它die();掉?
回复

使用道具 举报


ADVERTISEMENT

发表于 8-12-2007 08:19 PM | 显示全部楼层
1. input validation, 任何可以input data的地方,经常被忽略掉的就是http headers
2. 写自己的session handler

[ 本帖最后由 megablue 于 8-12-2007 08:21 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 8-12-2007 08:33 PM | 显示全部楼层
原帖由 megablue 于 8-12-2007 08:19 PM 发表
1. input validation, 任何可以input data的地方,经常被忽略掉的就是http headers
2. 写自己的session handler


经常被忽略掉的就是http headers?
什么意思?

user submit的任何$_POST or $_GET,我先经过一个function 处理里面的内容了
把任何类似 $xxx的 以及那些system的var都filter掉,然后return error msg的

session handler我不会写
我不知道sessions到底要怎样protect

我第一次写商业网站的login page的,怕给人用漏洞跑进来
回复

使用道具 举报

发表于 8-12-2007 11:23 PM | 显示全部楼层
原帖由 wing_s 于 8-12-2007 08:33 PM 发表


经常被忽略掉的就是http headers?
什么意思?

user submit的任何$_POST or $_GET,我先经过一个function 处理里面的内容了
把任何类似 $xxx的 以及那些system的var都filter掉,然后return error msg的 ...
注意injection,有很多种。
回复

使用道具 举报

发表于 8-12-2007 11:57 PM | 显示全部楼层
原帖由 wing_s 于 8-12-2007 08:12 PM 发表
sessions 的 var
如 $_SESSIONS 和 $HTTP_SESSIONS_VAR

其实需要去protect它的variable的吗?
如果要protect要怎么样
detect它被人尝试get variables或者改variables的,然后给它die();掉?


session 是在server side 那边set 的
我很好奇你 你所说的 别人 尝试去 拿是怎么个做法 。。
回复

使用道具 举报

 楼主| 发表于 9-12-2007 12:28 PM | 显示全部楼层

回复 #5 tensaix2j 的帖子

就是比如在可以posting的地方放下那些如<?=$_SESSIONS?>之类的

我不知道可以做到没的。。。
就是怕可以
回复

使用道具 举报

Follow Us
 楼主| 发表于 9-12-2007 12:29 PM | 显示全部楼层
原帖由 vampcheah 于 8-12-2007 11:23 PM 发表
注意injection,有很多种。


最普遍的有哪些?
回复

使用道具 举报

发表于 10-12-2007 12:02 PM | 显示全部楼层
原帖由 wing_s 于 9-12-2007 12:28 PM 发表
就是比如在可以posting的地方放下那些如之类的

我不知道可以做到没的。。。
就是怕可以


php 我很少用。
不过以你这么说, 如果行的通的话
只要有input 的地方,user 都有可以key in php 代码,的说, 那就不仅是拿别人的session的问题了
那他也可以   key in    一个 infinite loop    例如    for(;;);  搞到你的server 团团转。。。?
要真是如此的话。。 那还是建议你把input 收拾干净 好了。。。
回复

使用道具 举报


ADVERTISEMENT

发表于 10-12-2007 12:18 PM | 显示全部楼层
原帖由 wing_s 于 9-12-2007 12:29 PM 发表


最普遍的有哪些?

upload file
javascript
SQL
我比较介意的是以上3种。 其他的都是一些很罕有的injection 和 hacking method。 通常以植入木马的破坏力最叫人头痛。 不过马来西亚的网站没有哪几个会中。(没人有兴趣)  

最多帮你修改封面,加几个字,西游记的孙悟空也是这样做过
回复

使用道具 举报

发表于 11-12-2007 02:03 AM | 显示全部楼层
原帖由 tensaix2j 于 10-12-2007 12:02 PM 发表


php 我很少用。
不过以你这么说, 如果行的通的话
只要有input 的地方,user 都有可以key in php 代码,的说, 那就不仅是拿别人的session的问题了
那他也可以   key in    一个 infinite loop    例如 ...


不会的, 除非你直接把没有验证的用户输入的资料丢进eval() / include() / require() / register global / magic quotes开了又没做好验证/初始化 (暂时只想到这5个)

eval()的例子
$user_input = "for( ; ; ) ;";
eval($user_input); //这样的话齐天大圣不来才怪,帮你的网站做72变都行.
使用eval()非常危险,在非必要的情况下可免则免。

include的例子
include($malicious_php_file_uploaded_by_monkey_king);
or
include($your_password_file); // "/path/to/your/password/file"

register global = on的例子(近期的php新版都经已把register global 默认值设定为 "关", 除非你手痒,不然问题应该不大)
...
//$login_success = false; //理应在没做任何执行前初始化
...
if(mysql_affected_rows($result))
{
    //在错的地方初始化
    $login_success = true;
}

if($login_success)
{
    //show him the money!
}
...

在以上的代码当中因为$login_success没做初始化, 攻击者就可以在网址上传入函数
http://yoursite.com/treasure.php?login_sucess=1

magic quotes 的例子
$user_input= $_GET['post']; //没做验证, 加上magic quotes开启.
$sql = "INSERT INTO posts SET post = '$user_input'";

echo $sql;
// INSERT INTO posts SET post = 'the evil\'s tool - magic quotes'
看起来很方便的魔术引号
但是如果过于依赖魔术引号,造成的问题可大了. sql 注入之类的问题。
回复

使用道具 举报

发表于 11-12-2007 08:58 AM | 显示全部楼层
原帖由 megablue 于 11-12-2007 02:03 AM 发表
但是如果过于依赖魔术引号,造成的问题可大了. sql 注入之类的问题。
这问题可大可小哦。 如果真的完全没有考虑过SQL injection, 我帮你网站洗database 都可以。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 11-10-2025 03:04 AM , Processed in 0.781890 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表