- 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/
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
几年来,我一直在使用 apache2 开发和运行一个小型网站,大约每天一次,我的错误日志中充斥着对与 PHPMyAdmin 相关的不存在文件的请求。我的站点不使用 PHP,尽管有一个事件的 MySQL
我试图理解 via forensics 对此 page 所做的声明: When an activity is started by another application using a Broadc
我一直在寻找关于制作小型网络嗅探器和 found this one 的最直接的教程.我跟着它,但建议嗅探数据包的方法是: sock_raw = socket( AF_PACKET , SOCK_RAW
scapy嗅探时如何识别SSL数据包? 我知道 SSL 数据包通过端口 443,我可以假设所有通过端口 443 的 TCP 数据包都是 SSL 数据包吗? 最佳答案 其他人已经添加了对 SSL/TLS
我使用 scapy 编写了一个 python 脚本来嗅探我的 WIFI 网络中的 TCP 数据包,并查看两个目的地之间是否存在连接。如果我在不处于监控模式下时嗅探数据包,它会工作,但是当我在监控模式接
我有一个疑问:嗅探和转发有什么区别。 我的意思是当我处于中间人位置(客户端的网关)时,我可以用这个客户端浏览器访问所有的HTTPS网站。此外,我还可以检查网关端生成的流量(包括 HTTPS 请求/应答
我正在尝试确定如何最好地加载/浸泡测试我被分配测试的系统。我正在运行 Ubuntu 11.04,并想确定从我的 Web 浏览器发出的请求数量、频率和类型,这些请求指向开发团队正在开发的新应用程序,以确
我想监控在 Android 系统中运行的所有 Intent。 我在以下链接中找到了一个开源应用程序 IntentSniffer。 https://www.isecpartners.com/tools/
问题陈述 调用pcap_activate()结果 PCAP_ERR_RFMON_NOTSUP错误,即不支持射频监控模式。 上下文 我正在编写小型 C 程序,其工作是在监听模式下监听笔记本电脑的 wif
有没有办法嗅探发送到任何级别(高于传输级别)的 SQL Server 数据库的 SQL 查询?也许 ASP.NET 中有某种跟踪器,或者 SQL Server 中有内置日志? 最佳答案 也许是 SQL
运行此脚本时出现错误: from scapy.all import * sn = sniff(filter="http", count=30) wireshark(sn) 这是错误: WARNING:
我是 QWebsocket 的新手。我创建了两个应用程序,它们使用 QWebsocket 通信。有谁知道是否可以通过同一端口上的另一个应用程序捕获从 webClient 发送到 webServer 的
有谁知道如何用 Python 编写实时数据嗅探器来提取原始 IP 地址和被访问的完整 URL?我看过从 urlsnarf 中提取数据,但是不支持 IPv6(并且连接将连接到 IPv6 主机)。 虽然我
我最近购买了通过蓝牙与安卓手机/平板电脑连接的中国设备。由于没有适用于 windows/linux 的应用程序,我想创建一个供个人使用。 通常手机会连接到设备并交换一些数据。我将 PC 连接到设备并查
我目前正在为我的图形类指定项目,我正在考虑编写一个应用程序来显示 midi 数据的可视化工具。我想做的是在通过系统时嗅探 MIDI 数据。我不想劫持驱动程序,只想观察数据流逝(也就是说,我希望 MID
我正在尝试通过使用 NKE 制作 KEXT 来读取 http 请求和响应。我注册了一个套接字过滤器,每当我获取数据时,我都会使用如下代码打印 mbuf: unsigned char *dataStri
我正在尝试通过使用 NKE 制作 KEXT 来读取 http 请求和响应。我注册了一个套接字过滤器,每当我获取数据时,我都会使用如下代码打印 mbuf: unsigned char *dataStri
这个问题可能很奇怪,但假设我们有一个 Canvas ,例如可以绘制一些 3D 内容,如 experiment . 不管使用 ThreeJS、Babylon 或任何其他库来达到相同的效果,是否可以设置一
该 url 由最终用户在我的页面上作为字符串输入,因此可能指向任何域。 当前页面中的 JavaScript 需要嗅探 url,验证它是否仍然有效,并返回图像、视频或音频等类型,甚至考虑 html5 视
我是一名优秀的程序员,十分优秀!