- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对不使用 SSL 保护 PHP session 的主题很感兴趣。
令我惊讶的是,如果中间人嗅探用户和服务器之间交换的数据包,即使已通过身份验证,也很容易窃取 session 。我知道有一些策略可以限制损失,例如,在登录/注销时更改 sessionid,记录/检查用户系统参数(例如 OS、浏览器)。
然而,如果在一个已经通过身份验证且未注销的 session 期间(也没有时间超时),攻击者能够获得 session ID,那么他就可以轻松劫持 session (据我所知理解问题)。
我想到了一个可能的解决方案,在加密的登录身份验证期间,服务器可以向客户端发送一个随机 session 密码。 session 密码仅在该登录 session 期间有效。因此,在该 session 期间交换的每条消息都必须使用 session 密码(例如 MD5( session 密码+消息内容))进行签名。
问题解决了吗?假设攻击者无法对初始登录交换进行密码分析,这种方法的弱点是什么?
最佳答案
您提议的“签名”解决方案需要客户端行为 - 因此您需要一个可以执行签名的客户端应用程序。
如果您正在编写 Flash/Java applet/Unity 或任何这些插件,那么您可以按照您的计划进行,因为您可以更紧密地控制客户端并添加例程来进行签名。
但我假设您是在不使用插件的情况下将 HTML 页面传送到浏览器?如果是这样,你有两个选择,真的。第一个是 SSL(您正在排除),因为它内置于浏览器中。第二个是Javascript。为了获得最大的安全性,您需要以某种方式模仿 SSL,包括加密(公共(public)) key /算法的客户端存储(以便它们永远不会与消息一起传播)。您希望尽可能接近公钥/私钥 + SSL 握手 - 这绝非易事。正如 sarnold 所建议的那样,您需要一个强大的加密 key 。查看http://www.jcryption.org/例如 - 其他人出现在谷歌搜索中。
如果这有点夸张,您最可行的解决方案可能是使用 JS 协商一个更简单的加密算法:您发送一个“ key ”,将“ key ”存储在浏览器的 cookie 中,所有通信都通过 AJAX 和您基于该 key 创建了一个更简单的签名机制(加上可能是客户端在初始握手期间与您共享的另一个变量)。任何不解码或不匹配 key 的东西,然后终止整个 session 并重新开始。
sarnold 在他的回答中有很好的观点,即要避免使用 md5 和 SHA-1;有些人甚至认为 SHA256 对今天的计算机来说越来越弱,但考虑到您需要在 JS 中实现解决方案,为了提高速度,您可能会依赖于像 md5 这样的“piddly”(我的类比)。所以你最好的防御是准确的日志记录和暴力/错误检测。任何到达的乱码消息(你可以在两端检查)都应该被记录和监控。失败次数太多,IP 地址被禁止 - 并继续记录。
关于php - 通过数据包嗅探保护经过身份验证的 PHP session 免受 session 劫持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10907350/
当一个对象被实例化时,无论是字符串/函数/等等,__proto__属性(property)包括在内。该属性似乎是由 __proto__ 生成的Object.prototype 中的访问器... Obj
我一直在寻找防止 session 劫持的方法,在这种情况下,有人会窃取 session cookie 并使用它来获得对系统的访问权限。 程序如 http://codebutler.com/firesh
某些 malware such as AVG劫持 404 页面,以便在浏览器中显示一个布满自己广告的页面。 我发现的唯一解决方法是在我的 web 应用程序中放弃自定义错误页面的 404 http 状态
大多数Web应用程序使用cookie来管理用户的 session ,即使关闭了浏览器,也允许您保持登录状态。 让我们假装我们做了书中的所有事情,以确保保存cookie本身。 加密内容 仅设置http
WinError.h中定义的错误代码是否可以被劫持并通过我自己的代码返回? 定义了一些通用 Win32 错误代码: ERROR_FILE_NOT_FOUND:“系统找不到指定的文件。” 当找不到文件时
修改文本然后单击按钮只会触发 onchange 代码 但我需要知道按钮是否被点击: 我需要更改什么才能获取点击处理程序? 最佳答案 效果很好,但 alert() 很糟糕。 我不知道它的确切细节,但
如何保护我的用户免受 session 劫持? 最佳答案 Owasp Top 10 for 2010 中包含三个部分你应该阅读。 1: (!!) A3:“损坏的身份验证和 session 管理。” (!
我有一个问题。我试图在音频元素发生变化时立即获取它的来源,而不是让它连接到服务器。让我详细说明一下:服务器只允许一个请求(随机生成的内容 url),我正在尝试获取该请求,显然我不希望使用新源重新加载音
我需要一种 JavaScript/jQuery 方法来“劫持”不基于类或 ID 的 CSS 定义。 CSS 示例: input { border: 1px solid red; } 如果我有一
一位黑客联系我说他们会使用 session 劫持来关闭我的网站,他说我的文本框存在 session 劫持漏洞。 有没有办法保护文本框免受 session 劫持我用它来逃避和防止 sql 注入(inje
我一直在研究一套安全的登录/门户类型的工具,通用代码没有 SQL 注入(inject)、XSS 等,我有很多东西可以阻止 session 劫持。 为每个页面重新生成 session ID 将用户的IP
在我的 web.xml 中,我为一些资源定义了一个用户数据约束: Personal Area /personal/* U
情况 好吧,正如您在下面看到的,我有一个主应用程序,它创建了一个线程,它创建了一堆后台 worker 。当 RunWorkerCompleted 在某些 BG worker 上被触发时,我有时最终会丢
当我的 golang 应用程序崩溃时,它正在打印 go routines 堆栈跟踪并退出。我想知道是否有很好的方法来获取 panic 输出以进行进一步处理。重定向 stderr 是不够的,因为人们想在
我有一个关于PHP中 session 劫持的问题。我今天早上一直在阅读有关它的信息,我有一些问题在我阅读的文档中并未得到明确回答。 用户可以更改他们在我的网站上的 session 吗?也就是说,如果他
如何防止多个客户端使用相同的 session ID?我问这个是因为我想添加一个额外的安全层来防止我的网站上的 session 劫持。如果黑客以某种方式找出另一个用户的 session ID 并使用该
我想更多地了解 PHP Session Fixation和劫持以及如何防止这些问题。我一直在 Chris Shiflett 的网站上阅读以下两篇文章: Session Fixation Session
DNS 劫持作为最常见的网络攻击方式,是每个站长或者运维团队最为头疼的事情。苦心经营的网站受到 DNS 劫持后,不仅会影响网站流量、权重,还会让用户置身于危险之中,泄露隐私造成财产损失。 就是这样
编辑:对于那些想知道该 SDK 是什么的人来说,它是 Flurry 的中文克隆版,==>> Umeng。 编辑2:在那个奇怪的SDK中实际上有一个禁用崩溃日志处理选项,这将使我的uncaughtExc
我阅读了 Nancy Forms Authentication 的文档.据我所知,那里推荐的方法会导致终身 session ID: "The identifier is the token that
我是一名优秀的程序员,十分优秀!