首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >智能PHP会话处理/安全

智能PHP会话处理/安全
EN

Stack Overflow用户
提问于 2011-04-04 16:19:25
回答 2查看 338关注 0票数 2

我已经决定了处理应用程序身份验证的最好方法是从头开始编写我自己的会话处理程序。就像在异形中一样,它是确保一件事情按照你希望的方式完成的唯一方法。

话虽如此,我在最初的设计中遇到了一些障碍。我本来打算以混合方式使用PHP的会话处理程序,但我担心数据库的并发性问题。以下是我的计划:

  1. 我要做的第一件事就是检查IP(甚至可能是会话)来进行未经授权的尝试。我写了一些睡眠不好使的条件。这里的大问题显然是在哪里存储我的黑名单,以获得最优的读取speed.
  2. session_id生成、散列和存储在$_SESSIONmyid中。同一令牌的一个单独的部分存储在第二个$_SESSIONmytoken中。然后将相应的数据存储在question).
  3. Each表X中,该位置是我尚未确定的位置(这是此request.
  4. Depending后续请求的根,然后验证myid & mytoken是我们所期望的,然后根据会话的状态重新为下一个request.
  5. Depending重新颁发新的凭据,然后执行更明显的

函数。

因此,这是我的偏执会话处理程序的高级概述。以下是我真正被困住的问题:

I.存储IP ACL的最佳方式是什么?我应该写/读给hosts.deny吗?我的方法有什么性能问题吗?

II.我的MitM预防方法看起来还好吗,还是我对多个指标的比较过于偏执了?存储这些信息的最佳方法是什么,这样我就不会在80到100个用户的时候碰到砖墙了?

III.我是否不必要地用持续的会话再生+写回来敲击服务器?有更好的方法吗?

我最初是为一个小型应用程序编写这篇文章的,但我更希望它是一个可重用的组件,我可以与世界共享,因此我希望确保它尽可能地可访问和安全。

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2011-04-04 16:27:43

写作到hosts.deny

虽然这是一个好主意,如果您想要完全IP禁止用户从您的服务器,它将只工作在一个服务器。除非您在多个服务器上有某种安全的传播(哦,伙计,这听起来已经很可怕了),否则您将永远停留在一个服务器上。

在使用hosts.deny时,您还必须考虑以下几点:

  • Security:打开对A中web服务器user
  • Pain的与hosts.deny一样重要的文件的访问:管理来自不同进程的多个写入(A中example)
  • Pain的denyhost:如果您希望授予对以前在稍后日期禁止的IP的访问

),则对该文件进行安全的修改

我建议您只需在应用程序的应用程序级别上禁止IP地址。您甚至可以将被禁止的IP地址存储在一个中央数据库中,这样它就可以被多个子系统共享,并且它仍然在应用程序级别上强制执行。

票数 1
EN

Stack Overflow用户

发布于 2011-06-16 06:49:47

存储IP ACL的最佳方法是将被禁止的IP推送到SQL数据库中,而SQL数据库不存在像写入文件这样的并发问题。然后,外部脚本(定期或触发器)可能会生成IPTABLES规则。您不需要在每次访问时重新读取您的数据库,只在检测到错误行为时才进行写入。

在公共互联网上,如果你在透明的代理或移动设备背后为客户提供服务--他们的IP改变--对IP的固定不是件好事。让用户在首选项中选择,如果他们想要这个特性(取决于您的受众,如果他们知道IP意味着什么.)。我的解决方案是为每个(页面)请求生成唯一的令牌,在该页面中重新使用AJAX请求(而不是进入资源问题--随机数、会话数据存储、.)。我生成的令牌被存储在会话中,并被记住几分钟。这让我们用户打开几个选项卡,返回并提交到一个较早打开的选项卡中。我不受IP约束。

这取决于..。你没有足够的数据来回答。以上可能完全适合您的需要,大约500个用户基础来您的网站5分钟,每天一次。或者,它可能适合1000个独特的用户在一个小时内在一个聊天网站/游戏-这取决于您的应用程序正在做什么,以及您的缓存数据的效果,可以被缓存。

设计好,测试,基准。测试会话处理是否是您的资源问题,而不是其他问题。好的算法不应该让您陷入资源问题。DoS防御包括在内,它不应该是应用程序中的代码.应用程序可能会提示DoS预防机制该做什么,并让防御的专门工具(见答案一)。

不管怎么说,如果你在将来遇到了资源问题,最好的解决办法就是新的硬件。对某些人来说,这听起来很粗鲁,甚至不称职,但在6个月内计算出新服务器的价格,实际上比你的工作价格高出30%:为新服务器支付600美元,并增加130%的马力,或者为提高5%而每月支付100美元(好吧,提高40%,但如果一周价值25美元,可能会有很大的变化)。

如果您从头开始设计,请先阅读https://www.owasp.org/index.php/Session_Management,然后在谷歌上搜索会话劫持、会话固定和类似字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5541329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档