解决ecshop登陆自动退出的莫名现象

简介:

 最近在做ecshop的二次开发,程序发布后测试出现一个莫名的问题。点击几次页面后出现session丢失,需要重复登陆;本地怎么测试也都无法重现问题。一开始以为是修改程序的问题,可是怎么找都找不着问题所在。网上搜索了一下,说是ip发生了变化引起的。于是做了如下测试:

  1、www.ip.cn查询并记录下IP

  2、登陆

  3、随机点击网页,直到要求重新登陆

  4、www.ip.cn重新查下IP

  果然前后两个IP不一样。因而很有可能是由于IP发生变化导致session失效,于是查看了下ecshop的session机制。其中获取session key的函数是这样

  includes/cls_session.php(移动端的也类似:mobile/include/cls_session.php)

复制代码
function gen_session_key($session_id)
{
  static $ip = '';

  if ($ip == '')
  {
    $ip = substr($this->_ip, 0, strrpos($this->_ip, '.'));
  }

  return sprintf('%08x', crc32(ROOT_PATH . $ip . $session_id));
}
复制代码

  当IP发生变化时:substr($this->_ip, 0, strrpos($this->_ip, '.'))获取到的IP段,只要不在同一个IP段内便无法获得相同的session key;进而也就无法获得session的具体信息,也就导致重复登陆。这也是为什么本地无法重现问题的原因。好吧,问题找到了。那么怎么解决呢?最简单的办法就是将获取IP段的部分去掉,于是修改后的函数也就成这样了。

复制代码
function gen_session_key($session_id)
{
    static $ip = '';

  /*
    if ($ip == '')
    {
        $ip = substr($this->_ip, 0, strrpos($this->_ip, '.'));
    }
   */

    return sprintf('%08x', crc32(ROOT_PATH . $ip . $session_id));
}
复制代码

  这样便可解决重复登陆的问题。但这又涉及到程序的安全性问题,一旦session泄露IP这一步的判断也就失效了。这也进一步降低了网站的安全性,这中间怎么取舍也就见仁见智了。






本文转自秋楓博客园博客,原文链接:http://www.cnblogs.com/rwxwsblog/p/4677876.html,如需转载请自行联系原作者
目录
相关文章
|
网络协议 开发工具 网络虚拟化
SourceTree git 配置代理
SourceTree git 配置代理
456 1
|
11月前
|
JavaScript 前端开发 API
Vue.js与Angular的优劣分析
Vue.js和Angular都是非常流行的JavaScript框架,它们在构建现代Web应用程序方面各有优劣
252 64
|
10月前
|
人工智能 安全 前端开发
《主动式智能导购 AI 助手构建》解决方案评测
在部署《主动式智能导购 AI 助手构建》解决方案时,需关注以下四方面: 1. **引导与文档支持**:官方应提供细致、易懂的引导步骤,涵盖环境搭建、模块配置及常见问题解答。遇到错误及时截图反馈。 2. **原理与架构理解**:深入探究智能导购的工作原理和系统架构,从前端到后端各层运作机制,明确模块职责与扩展性。 3. **关键技术洞察**:理解百炼大模型和函数计算的应用,确保其适配场景并高效运行,通过截图反馈技术难题。 4. **生产环境评估**:评估方案在实际业务中的适用性,如安全防护和数据接入指导,确保高并发下的稳定性和全面性。 认真评测这些要点,助力方案持续优化。
146 11
|
10月前
|
机器学习/深度学习 自然语言处理 算法
《Java 情感分析:前沿技术与方法全解析》
在数字化时代,情感分析是提取文本数据价值的关键技术。本文探讨了Java在这一领域的应用,涵盖自然语言处理工具(如Apache OpenNLP、Stanford NLP)、机器学习方法(如朴素贝叶斯、SVM)及深度学习框架(如TensorFlow、Deeplearning4j)。通过这些技术和工具,Java能够高效处理情感分析任务,广泛应用于社交媒体监测、客户反馈分析等场景,尽管仍面临文本多样性与复杂性的挑战。
322 9
|
10月前
|
数据采集 人工智能 智能设计
《人工智能:解锁新材料最佳掺杂元素及比例的密码》
在新材料研发中,确定最佳掺杂元素及比例充满挑战。传统方法依赖经验与试错,耗时且成本高。人工智能(AI)的介入带来了转机:通过分析海量数据、模拟材料行为和优化实验设计,AI能精准预测掺杂效果,减少盲目实验。尽管面临数据质量和模型解释性的挑战,AI仍显著提升新材料研发的效率与准确性,推动多个领域的性能突破,引领智能设计驱动的新材料时代。
231 5
|
11月前
|
JSON API 数据格式
Amazon商品详情API,json数据格式示例参考
亚马逊商品详情API接口返回的JSON数据格式通常包含丰富的商品信息,以下是一个简化的JSON数据格式示例参考
|
10月前
|
弹性计算 负载均衡 安全
企业业务上云经典架构方案整体介绍
本次课程由阿里云产品经理晋侨分享,主题为企业业务上云经典架构。内容涵盖用户业务架构现状及挑战、阿里云业务托管经典架构设计、方案涉及的产品选型配置,以及业务初期如何低门槛使用。课程详细介绍了企业业务上云的全流程,帮助用户实现高可用、稳定、可扩展的云架构。
339 0
|
10月前
|
机器学习/深度学习 人工智能 计算机视觉
深度学习在医疗影像分析中的应用与挑战
本文探讨了深度学习技术在医疗影像分析领域的应用现状和面临的主要挑战。随着人工智能技术的飞速发展,深度学习已经成为推动医疗影像诊断自动化和智能化的重要力量。文章首先概述了深度学习的基本原理及其在图像识别任务中的优势,随后详细讨论了其在CT、MRI等医疗影像处理中的成功案例,并分析了当前技术面临的数据隐私、模型解释性以及临床验证等方面的挑战。最后,提出了未来研究的方向和可能的解决方案,旨在促进深度学习技术在医疗领域的更广泛应用。
258 0
|
算法 安全 区块链
区块链如何实现交易匿名性
**区块链匿名性摘要:** - 匿名性源于公钥/私钥系统,公钥作地址,私钥验证交易,不透露身份信息。 - Coin Mixing 和 CoinJoining 混合交易,使资金流向难以追踪。 - 匿名币如 Monero、Zcash 使用零知识证明和环签名技术增强匿名。 - 隐身地址和一次性地址增加隐私,公私钥交换确保安全交易而不暴露身份。 - 多层次加密与协议结合,保障区块链交易隐私。