For security-sensitive flows (WS/API, authenticated cloning, token/API-key auth), don’t rely on generic or heuristic validation.
Apply these rules: 1) Validate with explicit allow/deny semantics
2) Decide authorization/authZ at the destination handler
3) Add regression tests for both positive and negative cases
Minimal pattern to follow:
Example (illustrative):
@socketio_server.event
async def connect(sid, environ, _auth):
with webapp.request_context(environ):
origin_ok, reason = validate_ws_origin(environ)
if not origin_ok:
return False
return True # authorization/CSRF requirements enforced by the target handler
@pytest.mark.parametrize(
"url,should_accept",
[
("https://host/org/repo.git", True),
("git@host:org/repo.git", True),
("ssh://alice@host/org/repo.git", True),
("ssh://host/org/repo.git", False),
("javascript://host/org/repo.git", False),
],
)
def test_url_validation(url, should_accept):
assert is_valid_clone_url(url) is should_accept
Enter the URL of a public GitHub repository