Forbid non-LAN web to access LAN

Latest Version

Version
0.6.2
Update
March 22, 2024
Size
37.49KiB
Developer
garywill.github.io
Category
Users
345
Rating
0 ★
Manifest Version
2
Web Store Status
Languages Support
English
See more
Permissions
WebRequest
WebRequestBlocking
*://*/*
Ws://*/*
Wss://*/*
Ftp://*/*
ContextMenus
Storage
See more

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 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