プロジェクト
大文字小文字を試してパスを無視し、認証情報、IPリテラル、空白、1–65535以外のポートを拒否してください。
ASCIIのDNS名と英字の接尾辞を使うHTTPSオリジンを既定ポート443で比較してください。
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以外のポートを拒否してください。
実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。
OpenAI互換またはAnthropicのエンドポイントを、ベースURLと必要なAPIキーで設定し、接続をテストします。ローカルのモデルサーバーは起動が必要です。リモートツールは別途データを送信する場合があります。
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オリジンの比較は実践的な依頼の1つです。明示ポートと既定ポート、大文字小文字が混在するホスト名、受け入れる部分集合に含まれない入力の例を提示します。現在のコードによる扱いと、呼び出し側が受け取るべき結果を尋ねてください。普遍的なURL規則を想定せず、アプリケーションの方針に沿った議論になります。
正規化と拒否の動作の両方について提案を確認します。以前は拒否した形を受け入れると、比較がすっきり見えても仕様が広がる場合があります。プロジェクトテストを実行し、不正な入力への応答も含め、一致に依存する呼び出し箇所を調べてください。受け入れる部分集合を変更と一緒に文書化しておきます。
Orivelleは対応するOpenAI互換またはAnthropicのエンドポイントに、必要な認証情報を使って接続します。エンドポイントで利用可能ならアブリテレーション済みAIモデルを選べます。ツール、コンテキスト上限、残る制限はモデルとサーバーが決めます。その呼び名はセキュリティ上の判断を保証せず、使う予定のコードのレビューに代わるものでもありません。
解析とアプリケーションでの受け入れは別の判断です。パーサーで構成要素を取得し、どのスキームとホスト形式をコードが許可するか確認します。解析の成功を受け入れと見なさず、規則を強制している場所をモデルに特定させてください。
はい。書き換えで、旧コードが拒否した値を補正したり再解釈したりする場合があります。同値で受け入れるケースと共に拒否ケースも含め、呼び出し側の応答を確認してください。新たに受け入れる形を仕様に含めるか明示的に決めます。
いいえ。この比較はコードのオリジン規則を扱います。リモートサービスの信頼性や後続リクエストの安全性は確立しません。アプリケーションがリクエストする箇所で、それらを別の要件として確認してください。
架空のホスト名を優先し、拒否ケースに不可欠でなければ認証情報を省いてください。エンドポイントとツールの送信先を確認します。別途動かすローカルのモデルサーバーを使っても、URLを確認するツールを含め、すべての接続ツールがローカルになるわけではありません。
Orivelle · 更新日 2026-10-25