DEDE把变量放进session中,结果取值为null的问题
2013-12-02 16:29
330 查看
最近在基于织梦CMS(dedecms)做公司网站,可以说改动不少,而其中最令我印象深刻的就是织梦的session。
自己想在前台页面限制一些用户的访问,且后台用户可以访问。必须验证织梦后台用户的登录,于是开始取织梦的session,但是一直没有取出值来,后来才发现原来织梦的session有这样一段代码
于是便顺利的取出了session值。
回过头来一想又有一个问题,而且是织梦的大问题,改过织梦程序的一定知道,代码如下:
一段接收变量的函数,不做详解了。如果不想的话,这段代码写的相当不错,但是如果考虑到安全性,绝对的有漏洞可寻。
如果我命名这样一个变量 _SESSION["dede_admin_id"]=1 ,如果这个变量被成功接收了,那么dede的任何防御都是那么的不堪一击。稍微看过dede后台登录程序的都知道这个是判断用户登录的session值,问题很严重。
所以错在哪里就在哪里做起,只需过滤掉接收变量的第一个"_"就可以了,那该怎么写呢,用正则呗,代码如下:
preg_replace("/^_/","",$_k)
OK搞定。
做了两个月的织梦,织梦程序做的不错,但是问题也不少。希望织梦能够越来越好了 !
自己想在前台页面限制一些用户的访问,且后台用户可以访问。必须验证织梦后台用户的登录,于是开始取织梦的session,但是一直没有取出值来,后来才发现原来织梦的session有这样一段代码
$sessSavePath = DEDEDATA."/sessions/"; if(is_writeable($sessSavePath) && is_readable($sessSavePath)) { session_save_path($sessSavePath); }$sessSavePath就是织梦session的存放位置,这里有两点需要注意,一是session_start()必须放在这段代码之后,二是$sessSavePath不能是文件的相对路径或者绝对路径,只能是文件的存放路径如:F:\SESSION。
于是便顺利的取出了session值。
回过头来一想又有一个问题,而且是织梦的大问题,改过织梦程序的一定知道,代码如下:
function _RunMagicQuotes(&$svar) { if(!get_magic_quotes_gpc()) { if( is_array($svar) ) { foreach($svar as $_k => $_v) $svar[$_k] = _RunMagicQuotes($_v); } else { $svar = addslashes($svar); } } return $svar; }
if (!defined('DEDEREQUEST')) { //检查和注册外部提交的变量 foreach($_REQUEST as $_k=>$_v) { if( strlen($_k)>0 && preg_match('/^(cfg_|GLOBALS)/',$_k) ) { exit('Request var not allow!'); } } foreach(Array('_GET','_POST','_COOKIE') as $_request) { foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v); } }
一段接收变量的函数,不做详解了。如果不想的话,这段代码写的相当不错,但是如果考虑到安全性,绝对的有漏洞可寻。
如果我命名这样一个变量 _SESSION["dede_admin_id"]=1 ,如果这个变量被成功接收了,那么dede的任何防御都是那么的不堪一击。稍微看过dede后台登录程序的都知道这个是判断用户登录的session值,问题很严重。
所以错在哪里就在哪里做起,只需过滤掉接收变量的第一个"_"就可以了,那该怎么写呢,用正则呗,代码如下:
preg_replace("/^_/","",$_k)
OK搞定。
做了两个月的织梦,织梦程序做的不错,但是问题也不少。希望织梦能够越来越好了 !
相关文章推荐
- DEDE把变量放进session中,结果取值为null的问题
- 在properties.xml中定义变量,在application.xml中取值问题
- hibernate.current_session_context_class 的各个取值的区别以及与Spring整合的问题
- struts2中,session 存放对象或变量,以及取值
- action的变量在jsp中的取值问题
- MyBatis 解决查询结果Map中,值为null,不存储键值的问题
- 探究Laravel使用env函数读取环境变量为null的问题
- 函数外局部变量 null问题
- c++中的局部变量和全局变量重名时取值问题
- 复合赋值语句妙用(a := c):判断结果为null则指定其它值或变量
- 解决mybatis使用char类型字段查询oracle数据库时结果返回null问题
- 解决MyBatis查询结果Map中值为null不存储键值的问题
- HttpContext.Current.Session为null的问题
- vue 中data初始化变量赋值null或{}的问题
- AFNetWorking 内存泄漏的问题 -- AFHTTPSessionManager --Instruments体检结果分享
- 【转】c++中的局部变量和全局变量重名时取值问题
- 异步 HttpContext.Current实现取值的方法(解决异步Application,Session,Cache...等失效的问题)
- 求助学习mybatis的时候,报NullpointerException,sqlsessionfactory这里出现的问题
- 有关httpContext.Current.Session[值] 取值的问题