Some browsers try both IPv4, and IPv6 for every request, and show result of whatever responded faster. http://tools.ietf.org/html/rfc6555
Probably we need to store 2 addresses per session (one IPv4, one IPv6), and if someone connects with existing session from unknown IP, but the corresponding IPvX slot of the session is still empty, fill that slot, and allow the connection.
Some browsers try both IPv4, and IPv6 for every request, and show result of whatever responded faster. http://tools.ietf.org/html/rfc6555
Probably we need to store 2 addresses per session (one IPv4, one IPv6), and if someone connects with existing session from unknown IP, but the corresponding IPvX slot of the session is still empty, fill that slot, and allow the connection.
Issue found with help of sterkh.
##
<bountysource-plugin>
---
There is a **[$10 open bounty](https://www.bountysource.com/issues/3099474-web-session-ip-protection-conflicts-with-too-smart-browsers?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github)** on this issue. Add to the bounty at [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github).
</bountysource-plugin>
<!-- github-sync-id:37729580 -->
According to [Wikipedia "Happy Eyeballs"](https://en.wikipedia.org/wiki/Happy_Eyeballs) have been supported by major browsers since
- Google Chrome
- I cannot find since when.
- Opera 12.10
- I cannot find current version.
- Firefox 13
- Ubuntu 14.04 has Firefox 20
- (OS X Lion)
<!-- github-comment-id:48833970 -->
You should only allow filling the slot if the connection is done within a timeframe of X, otherwise it would be an open door for session hijacking.
You should only allow filling the slot if the connection is done within a timeframe of X, otherwise it would be an open door for session hijacking.
<!-- github-comment-id:49305123 -->
I'd like to work on the issue. Can you help me with how to get started with the znc code and how to reproduce the issue?
I'd like to work on the issue. Can you help me with how to get started with the znc code and how to reproduce the issue?
<!-- github-comment-id:277516393 -->
Well, start with compiling it. The relevant code is in HTTPSock.cpp and WebModules.cpp
To reproduce, you either need dual stack setup, with DNS pointing at both addresses, or craft HTTP requests manually.
Well, start with compiling it. The relevant code is in HTTPSock.cpp and WebModules.cpp
To reproduce, you either need dual stack setup, with DNS pointing at both addresses, or craft HTTP requests manually.
<!-- github-comment-id:277517920 -->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Some browsers try both IPv4, and IPv6 for every request, and show result of whatever responded faster. http://tools.ietf.org/html/rfc6555
Probably we need to store 2 addresses per session (one IPv4, one IPv6), and if someone connects with existing session from unknown IP, but the corresponding IPvX slot of the session is still empty, fill that slot, and allow the connection.
Issue found with help of sterkh.
--- There is a **[$10 open bounty](https://www.bountysource.com/issues/3099474-web-session-ip-protection-conflicts-with-too-smart-browsers?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github)** on this issue. Add to the bounty at [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github).According to Wikipedia "Happy Eyeballs" have been supported by major browsers since
You should only allow filling the slot if the connection is done within a timeframe of X, otherwise it would be an open door for session hijacking.
I'd like to work on the issue. Can you help me with how to get started with the znc code and how to reproduce the issue?
Well, start with compiling it. The relevant code is in HTTPSock.cpp and WebModules.cpp
To reproduce, you either need dual stack setup, with DNS pointing at both addresses, or craft HTTP requests manually.