開発者データ ツールキット — 質問
ツールキットがデータをどのように処理するか、どのユーティリティが正確であるか、そしてそれぞれがどこで意図的に停止するか。
ショートバージョン
ここにあるすべてのユーティリティはブラウザーのタブで実行されます。貼り付けた内容は、ToolAcre アプリケーション サーバーによってアップロードまたは保存されません。サイト全体の分析は、構成された正規実稼働ホスト上でのみ実行され、プライバシー ポリシーで開示されます。貼り付けられた値は、ToolAcre 独自の分析イベントから除外されます。
以下の質問は、特定の結果を信頼できるかどうかを判断するものです。ユーティリティが正確である場合は、そのように記載されています。近似したり拒否したりする場合は、そのことも言います。
貼り付けたものはどうなりますか
- すべての変換、ハッシュ、デコード、差分はブラウザーのタブで実行されます。ページが読み込まれるとサーバーは関与しないため、入力はサーバーにアップロード、記録、または保存されません。
- ハッシュはブラウザー独自の Web Crypto 実装から取得され、UUID は暗号的に安全なランダム ジェネレーターから取得されます。どちらもネットワーク通話を必要としません。
- 入力した内容はローカル ストレージや Cookie に書き込まれません。ページをリロードするとページは破棄されます。タブを閉じると破棄されます。
- サイト全体の分析は、構成された正規実稼働ホスト上でのみ実行され、プライバシー ポリシーで開示されます。ローカルホストとプレビューホストはそれを拒否します。貼り付けられた値、トークン、URL、およびファイルの内容は、ToolAcre 独自の分析イベントから除外されます。現在の構成では広告は無効になっています。
- つまり、JWT または API キーはライブ認証情報です。安全な習慣は、この主張を含め、その主張がどれほど信頼できるものであっても、自分が書いていない Web ページに貼り付けることは決してしないことです。
質問
私が貼り付けたものはアップロードされていますか?
ToolAcre アップロードはそれを受け取りません。すべての変換、ハッシュ、デコード、差分はブラウザーで行われます。サイト全体の分析は、構成された正規実稼働ホストに限定され、プライバシー ポリシーで開示されます。貼り付けられた値、トークン、URL、およびファイルの内容は、ToolAcre 独自の分析イベントから除外されます。
次の訪問の間に何か保存されていますか?
いいえ。ツールキットは、localStorage、sessionStorage、IndexedDB、Cookie には何も書き込みません。ページをリロードすると、入力した内容がすべてクリアされます。タブを閉じても同様です。アカウント システムがないため、サインアップする必要も削除する必要もありません。
ここでのbase64は絵文字や英語以外のテキストを処理しますか?
はい、そのとおりです。テキストはエンコード前に UTF-8 bytes に変換され、厳密なデコーダーでデコードし直されるため、絵文字、CJK、アラビア語、結合マーク、ZWJ シーケンスはすべてバイトごとに往復処理されます。これはブラウザの組み込み btoa() が間違っていることです。一部の文字ではスローし、他の文字では不正なバイトを暗黙的に生成します。
JSON バリデーターはどのようにしてエラー位置を見つけますか?
エンジンのエラー メッセージを読み取るのではなく、独自のスキャナーを使用します。ブラウザーの JSON エラー テキストはエンジン固有であり、現在の V8 では一部のエラーの位置が完全に省略されます。スキャナーはドキュメントを調べ、有効な JSON ではない最初のオフセットを、人間のために書かれた理由 (末尾のコンマ、一重引用符で囲まれた文字列、終了していない文字列) に加えて、問題のある行とキャレットとともに報告します。
どの YAML 機能がサポートされていますか?
標準の YAML 1.2 構造。JSON 形式のデータ (文字列、数値、ブール値、null、シーケンス、マッピング) のみを生成できる制限付きスキーマで読み取られます。任意のオブジェクトを構築するタグは拒否されます。 JSON スキーマ (最も厳密) とコア スキーマ (~ および空の値も null、16 進整数、.inf / .nan に解決されます) のどちらかを選択できます。
YAML ファイルが「不明なタグ」で失敗するのはなぜですか?
!!js/function、!!python/object/apply、!!binary、!!timestamp などのカスタム タグまたは言語固有のタグを使用するためです。これらを構築するように構成されたローダーは、任意のオブジェクト コンストラクターです。これは、いくつかの言語ではリモート コード実行のバグの一種です。このツールは、例外を作るのではなく、仕様によってそれらを拒否します。
ハッシュは正しいですか?
これらはブラウザー独自の Web Crypto 実装によって計算され、テスト スイートは公開されたベクトルに対してそれらをチェックします。「abc」の SHA-256 は ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad です。 SHA-1、SHA-384、および SHA-512 ベクトルは、空の文字列ダイジェストとともにチェックされます。
SHA-1 が壊れているとマークされているのはなぜですか?
そうですから。実際の衝突は 2017 (SHAttered) で公開され、選択プレフィックス衝突 (署名と証明書を破壊するバリアント) は 2020 で利用できるようになりました。これは、git オブジェクト ID やレガシー API 署名などの既存の SHA-1 値を再現できるように含まれていますが、これに依存することとは異なります。
UUID はどこから来たのでしょうか?
crypto.randomUUID() または crypto.getRandomValues() から (randomUUID が使用できない場合)。どちらもブラウザの暗号的に安全なジェネレーターです。 Math.random() は決して使用されません。その内部状態は出力の短期間の実行から復元できるため、そこから構築されるものはすべて予測可能になります。安全なソースが存在しない場合、ツールは静かにダウングレードするのではなく、生成を拒否します。
JWT デコーダーは署名を検証しますか?
いいえ。ヘッダーとペイロードをデコードし、それらが主張している内容を示します。署名はチェックされないため、トークンが本物であること、変更されていないこと、またはその名前が誰によって発行されたものであることを証明するものは何もありません。検証には、発行者のキーとピン留めされたアルゴリズムが必要です。これらは、Web ページではなく、トークンを信頼するシステムに属します。
実際のアクセス トークンを貼り付けることはできますか?
ここでも、他の場所でも、できるし、すべきではありません。ライブ トークンは資格情報です。有効期限が切れるまでは、それを保持している人が自分として行動できます。このページはローカルでデコードされ、何も送信されませんが、これはどのサイトでも一目で確認できない主張であるため、安全な習慣は期限切れであるか、テスト トークンです。すでにどこかに貼り付けている場合は、それを回転させます。
テキストの差分はどのように機能しますか?
これは、単純な行ごとの比較ではなく、最小限の追加と削除のセットを提供する最長共通部分シーケンス編集スクリプトを計算します。同一の先頭行と末尾行が最初にトリミングされるため、1 か所が異なる 2 つの大きなファイルを高速に比較できます。
diff が非常に大きな入力を拒否するのはなぜですか?
LCS アルゴリズムには、2 つの長さの積に比例する時間とメモリが必要です。数千の異なる行を超えると、ブラウザ タブが割り当てを試みるべきではないため、ツールは明確に拒否し、より小さい領域を比較することを提案します。コンテンツの大部分を共有するファイルは最初にトリミングされ、合計サイズに関係なく高速に動作します。
タイムスタンプ単位の検出は信頼できますか?
これは文書化されたヒューリスティックであり、沈黙することはありません。 10^11 以上はミリ秒として扱われます。10^11 秒は 5138 年であり、10^11 ミリ秒は 1973 であるためです。実際に使用される単位は常に結果とともに表示され、上書きすることができます。
ツールキットはオフラインでも動作しますか?
ページが読み込まれると、はい、何もネットワークを必要としません。 Service Worker がないため、初期ロードには引き続き接続が必要です。
電話でも機能しますか?
はい。レイアウトは 320 CSS ピクセルから上に機能し、フォーム テキストは 16px であるため、モバイル Safari はフォーカスにズームせず、コントロールは 44 ピクセルのタッチ ターゲットの最小値を満たします。エディターと出力はそれぞれのボックス内でスクロールするため、縮小された JSON の長い行によってページが広がることはありません。
HTML エディターのサニタイザーは、信頼できない入力に対して安全に使用できますか?
いいえ、パネルはそう言っています。これは、エディター自身の出力の許可リストです。固定リストの外にある要素と属性は削除され、リストされない限り属性が存続しないためイベント ハンドラーは存続できません。また、http、https、mailto、tel、ftp、および相対リンクのみが保持されます。これにより、このエディターが出力する内容を、制御するページに安全に貼り付けることができます。これは汎用の XSS フィルターではなく、HTML5 パーサーではなく文字列トークナイザーであるため、原理的には敵対的なペイロードはブラウザーによって別の方法で解析される可能性があります。プレビューは許可スクリプトのないサンドボックス化された iframe であるため、そこでは何も実行できません。
chmod 計算ツールで時々 S と T が大文字で表示されるのはなぜですか?
特殊ビットが設定されているが、一致する実行ビットが設定されていないためです。 4755 は rwsr-xr-x で、実行可能な setuid プログラムです。 4644 は rwSr--r-- であり、誰も実行できない setuid ファイルであり、これはほとんどの場合間違いです。大文字は、そのビットには何も作用しないことをシステムが示しており、そこに小文字の s が表示されている計算機は、確認する必要がある 1 つのことを隠していることになります。
Docker コンバーターは、貼り付けたコマンドを実行しますか?
いいえ。引用符対応トークナイザーを使用して文字列を分割し、部分を読み取ります。コードベースのどこにも eval、シェル、子プロセスはありません。バックティック、$(...)、およびセミコロンはリテラル文字のままです。変換できないフラグは、ドロップされるのではなく、目に見える警告で名前が付けられます。元のコマンドよりも少ない処理を黙って行う構成ファイルは、このツールが生成する可能性のある最悪のものであるためです。
cron プレビュー時間がサーバーと一致しないのはなぜですか?
通常、タイムゾーンは、cron が実行されているマシンのゾーンを使用し、プレビューは選択したゾーンを使用するため、サーバーのゾーンに設定します。もう 1 つの原因として考えられるのは、日ルールです。日と曜日の両方が設定されている場合、どちらかが一致すると cron が実行され、ほとんどの人が予想するよりも頻繁に起動されます。これに該当する場合、ジェネレーターは警告を発します。
広告や分析はありますか?
現在の構成では広告は無効になっています。サイト全体の分析は、構成された正規実稼働ホスト上でのみ実行され、プライバシー ポリシーで開示されます。貼り付けられた値、トークン、URL、およびファイルの内容は、ToolAcre 独自の分析イベントから除外されます。
制限事項
- すべてが 1 つのブラウザ タブで実行されるため、すべてのユーティリティはデバイスのメモリによって制限されます。それぞれに明示的な入力上限があり、フリーズするのではなく、大規模な作業を拒否します。
- ハッシュと UUID の生成には、ブラウザーが Web 暗号化を公開する場所であるため、安全なコンテキスト (https:// または localhost) が必要です。
- JWT デコーダーは署名を検証しないため、暗号化された JWE トークンはまったくデコードできません。
- YAML はデータのみのスキーマで読み取られます。カスタム タグに依存するドキュメントは設計により拒否されます。
- HTML エンティティ テーブルは、すべての 2,231 HTML5 名前付き参照ではなく実際のサブセットをカバーしており、不明な名前は推測されずに報告されます。
- diff は行全体を比較します。変更された行内では、単語レベルまたは文字レベルの強調表示はありません。
- HTML エディターのサニタイザーは、信頼できない入力に対する汎用の XSS フィルターではなく、独自の出力に対するホワイトリストであり、画像、テーブル、スタイル設定はありません。
- docker コンバーターは、一度に 1 つの docker run コマンドを処理し、表現できないすべてのフラグを削除する代わりに名前を付けます。
- cron ジェネレーターは 5 フィールドの crontab 構文のみを読み取り、次回の実行時間はサーバーに関する保証ではなく、ブラウザーのタイムゾーン データに基づいたプレビューです。