프로젝트
대소문자를 시험하고 경로를 무시하며 인증 정보와 IP 리터럴 및 공백과 1–65535 밖의 포트를 거부하세요.
import re
from urllib.parse import urlsplit
def https_origin(url):
if type(url) is not str or any(not 33 <= ord(c) <= 126 for c in url):
raise ValueError("origin.text")
p = urlsplit(url)
if p.scheme.lower() != "https" or p.username is not None or p.password is not None:
raise ValueError("origin.scheme")
host = p.hostname or ""
labels = host.lower().split(".")
if len(labels) < 2 or not re.fullmatch(r"[a-z]{2,63}", labels[-1]):
raise ValueError("origin.dns")
if any(not re.fullmatch(r"[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?", x) for x in labels):
raise ValueError("origin.label")
if len(host) > 253 or p.netloc.endswith(":") or "\\" in url:
raise ValueError("origin.authority")
port = p.port if p.port is not None else 443
if not 1 <= port <= 65535:
raise ValueError("origin.port")
return ("https", host.lower(), port)
def same_origin(a, b):
return https_origin(a) == https_origin(b)대소문자를 시험하고 경로를 무시하며 인증 정보와 IP 리터럴 및 공백과 1–65535 밖의 포트를 거부하세요.
실제 동작을 예상 결과와 비교하세요. 검사가 실패하면 다음 변경을 하기 전에 원인을 조사하세요.
기본 URL과 필요한 API 키로 OpenAI 호환 또는 Anthropic 엔드포인트를 설정하고 연결을 테스트하세요. 로컬 모델 서버는 실행 중이어야 합니다. 원격 도구는 데이터를 별도로 전송할 수 있습니다.
import re
from urllib.parse import urlsplit
def https_origin(url):
if type(url) is not str or any(not 33 <= ord(c) <= 126 for c in url):
raise ValueError("origin.text")
p = urlsplit(url)
if p.scheme.lower() != "https" or p.username is not None or p.password is not None:
raise ValueError("origin.scheme")
host = p.hostname or ""
labels = host.lower().split(".")
if len(labels) < 2 or not re.fullmatch(r"[a-z]{2,63}", labels[-1]):
raise ValueError("origin.dns")
if any(not re.fullmatch(r"[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?", x) for x in labels):
raise ValueError("origin.label")
if len(host) > 253 or p.netloc.endswith(":") or "\\" in url:
raise ValueError("origin.authority")
port = p.port if p.port is not None else 443
if not 1 <= port <= 65535:
raise ValueError("origin.port")
return ("https", host.lower(), port)
def same_origin(a, b):
return https_origin(a) == https_origin(b)Orivelle는 애플리케이션 개발자에게 입력 경계의 결정을 살펴볼 Windows AI 코딩 작업 공간을 제공합니다. 프로젝트를 열고 어떤 입력을 허용하거나 거부하고 동등하게 볼지 설명하세요. 특히 주변 코드가 좁은 해석에 의존할 때는 규칙을 바꾸기 전에 모델에게 현재 구현을 살펴보도록 요청하세요.
제한된 HTTPS 출처 비교는 실용적인 요청 하나입니다. 명시적 포트와 기본 포트, 대소문자가 섞인 호스트명, 허용 부분집합 밖의 입력 예제를 제공하세요. 현재 코드가 이를 어떻게 처리하고 호출자가 어떤 결과를 받아야 하는지 물어보세요. 그러면 보편적인 URL 규칙을 가정하는 대신 애플리케이션 정책에 근거해 논의할 수 있습니다.
정규화와 거부 동작 양쪽에서 제안을 검토하세요. 비교가 깔끔해 보여도 이전에 거부하던 형태를 허용하면 계약이 넓어질 수 있습니다. 프로젝트 테스트를 실행하고 잘못된 입력 후 응답을 포함하여 일치 판단에 의존하는 호출 지점을 살펴보세요. 허용 부분집합을 변경과 함께 문서화하세요.
Orivelle는 지원되는 OpenAI 호환 또는 Anthropic 엔드포인트에 연결하며 필요한 경우 인증 정보를 사용합니다. 엔드포인트에서 제공할 때 어블리터레이션 AI 모델을 선택할 수 있습니다. 도구, 컨텍스트 한도, 남은 제한은 모델과 서버가 결정합니다. 이 명칭은 보안 결정을 인증하거나 사용하려는 코드의 검토를 대신하지 않습니다.
파싱과 애플리케이션의 허용 여부는 별개 결정입니다. 파서로 구성 요소를 얻은 뒤 코드가 어떤 스킴과 호스트 형태를 허용하는지 검토하세요. 파싱 성공이 허용을 뜻한다고 가정하지 말고 모델에게 규칙을 강제하는 위치를 파악하도록 요청하세요.
네. 재작성은 이전 코드가 거부한 값을 보정하거나 재해석할 수 있습니다. 동등한 허용 입력과 함께 거부 테스트 사례도 포함하고 호출자의 응답을 확인하세요. 새로 허용되는 형태가 애플리케이션 계약에 속하는지 명시적으로 결정하세요.
아니요. 여기의 비교는 코드의 출처 규칙을 다룹니다. 원격 서비스의 신뢰성이나 후속 요청의 안전성을 입증하지 않습니다. 애플리케이션이 요청을 보내는 곳에서 그 별도 요구사항을 검토하세요.
합성 호스트명을 우선 사용하고 거부 사례에 꼭 필요하지 않으면 인증 정보는 빼세요. 엔드포인트와 도구의 전송 대상을 검토하세요. 별도로 실행되는 로컬 모델 서버가 URL을 살펴보는 도구를 포함한 모든 연결 도구를 로컬로 만들지는 않습니다.
Orivelle · 업데이트 2026-10-25