Forbid non-LAN web to access LAN
LAN port scan forbidder Extension
Forbid untrusted web to scan localhost or LAN.
## Source Code Repo
https://github.com/garywill/LAN-port-scan-forbidder
## What
Webs can try to fetch `127.0.0.1:xxxx` or `192.168.Y.Z:xxxx` to scan your open ports in LAN.
Although browsers have cross-domain protections, webs can't read response contents, **but** can still see the connection succeeds or fails.
There're already reports that some websites using that as tracking fingerprint.
> A web for testing: http://samy.pl/webscan/
## So
Forbid any website behaviors trying to connect to your LAN or localhost, if user is visiting the website via their domains or public IP addresses. (Read the source code `background.js` to see the logic)
> Using JS library [whitequark/ipaddr.js](https://github.com/whitequark/ipaddr.js) (MIT License) v2.0.0 to judge IP range.
### Notification
User can enable notification. When untrusted web tries to access private network and get blocked, will show up notification.
### Fallback operation
If user find a web broken, user can temporary set this addon disabled via toolbar button for:
- this one tab
- this one tab and new tabs opened by this tab
- this one window (Firefox only)
- globally
(above can be set as keyboard shortcuts)
there's showy toolbar button badge indicating disabling status.
## Cases when web LAN scan is properly used
Not all LAN-port-scan are evil.
- Some manufacturers provide web for user's browser to scan LAN for their product that need updating.
- Some softwares use `127.0.0.1` communication to interact between native program and web.
## Disclaimer
This open souce addon comes with no warranty. Use on you own risk!
Read more
## Source Code Repo
https://github.com/garywill/LAN-port-scan-forbidder
## What
Webs can try to fetch `127.0.0.1:xxxx` or `192.168.Y.Z:xxxx` to scan your open ports in LAN.
Although browsers have cross-domain protections, webs can't read response contents, **but** can still see the connection succeeds or fails.
There're already reports that some websites using that as tracking fingerprint.
> A web for testing: http://samy.pl/webscan/
## So
Forbid any website behaviors trying to connect to your LAN or localhost, if user is visiting the website via their domains or public IP addresses. (Read the source code `background.js` to see the logic)
> Using JS library [whitequark/ipaddr.js](https://github.com/whitequark/ipaddr.js) (MIT License) v2.0.0 to judge IP range.
### Notification
User can enable notification. When untrusted web tries to access private network and get blocked, will show up notification.
### Fallback operation
If user find a web broken, user can temporary set this addon disabled via toolbar button for:
- this one tab
- this one tab and new tabs opened by this tab
- this one window (Firefox only)
- globally
(above can be set as keyboard shortcuts)
there's showy toolbar button badge indicating disabling status.
## Cases when web LAN scan is properly used
Not all LAN-port-scan are evil.
- Some manufacturers provide web for user's browser to scan LAN for their product that need updating.
- Some softwares use `127.0.0.1` communication to interact between native program and web.
## Disclaimer
This open souce addon comes with no warranty. Use on you own risk!
Source Manifest.json
{"update_url": "https://clients2.google.com/service/update2/crx", "name": "LAN port scan forbidder", "description": "Forbid non-LAN web to access LAN", "manifest_version": 2, "version": "0.6.2", "homepage_url": "https://github.com/garywill/LAN-port-scan-forbidder/", "author": { "name": "Garywill", "url": "https://garywill.github.io" }, "permissions": [ "webRequest", "webRequestBlocking", "*://*/*", "ws://*/*", "wss://*/*", "ftp://*/*", "contextMenus", "storage" ], "optional_permissions": [ "notifications" ], "icons": { "128": "icon.png" }, "background": { "page": "background.html" }, "browser_action": { "default_icon": "icon_gray.png", "default_title": "LAN port scan forbidder" }, "commands": { "_execute_browser_action": { "description": "Click toolbar button" }, "toggle_t" : { "description": "Toggle for one tab" }, "toggle_h" : { "description": "Toggle for one tab and new tabs opened by it" }, "toggle_global" : { "description": "Toggle globally enable/disable" } }, "options_ui": { "page": "options.html" }}
Read more