何年にもわたって WordPress プラグインをサポートしてきたことで、悪い習慣を教えてくれました。 顧客から、壊れたシリアル化されたオプションの BLOB が送信されます。それを読む必要があります 今、それで、あなたはそれを最初のオンラインアンシリアライザに貼り付けます Googleはあなたに与えます 私はそれについて考えずに長い間これをしました - 私が何を見ました日まで I& #39; d 貼り付けたばかりの顧客& #39; sでした wp_options エクスポート。 SMTP パスワード、MailChimp API キー、およびライセンス キーが含まれていました。 何も知らないサーバーにすべて投稿されたばかりで、名前がわからない人が実行したのは、推測できない国でした。
何も悪いことが起こらなかった, 私の知る限り. that& #39; s不安な部分 - 私は知る方法はありません. there& #39; s "のための通知はありません; your paste got logged." データは、someone& #39; sアクセスログに座っていたか、それがdid& #39; t, そして、I& #39; lは、どちらかを知ることはありません。
その事件は、なぜ Toolz.dev がそのように動作するかの大きな部分です。 サイト上の 50 のツールのすべてがブラウザで入力を処理します。 " 処理後に削除することを約束します" - そもそも送信されることはありません。このガイドでは、これら 2 つのアーキテクチャの違い、開発者にとって他のほとんどの人よりも重要な理由、およびツールを検証する方法について説明しています' s は約 30 秒で自分自身を主張します。そして、最終的にはその顧客の塊を安全な場所に貼り付けたので、 PHP アンシリアライザ それが私の悪い習慣に取って代わりました。
tl;dr: サーバーサイドツールは、他の誰かにあなたの入力を送信します& #39; sマシン, それはログに記録することができます, 保持, 違反, または共有 - そして、あなたはすることができます& #39; そのいずれかを検証することができます& #39; クライアントサイドツールは、コードを出荷し、ローカルにすべてを処理します; 検証は、1 つのDevToolsネットワークタブチェックを取ります. credentialsを含むもののために - JWTs,
wp-config値、接続文字列、API 応答 - などのクライアント側ツールを使用します JSON フォーマッタ、 JWT デコーダ、 SQL フォーマッタ、そして YAML バリデータ。 すべてオン Toolz.dev ブラウザで実行されます。
オンライン ツールに貼り付けた場合、実際には何が起こるでしょうか。
アーキテクチャは 2 つあり、すべてのオンライン ツールはそれらのアーキテクチャを 1 つ使用します。
サーバー側: 入力はブラウザからツールのサーバーに移動し、そこで処理され、結果が戻ります。 5 つのステップで、あなたのデータは、そのうちの 3 つで、他の誰かのインフラストラクチャに存在します。
Your browser → network → their server → network → your browser
(input) (transit) (processing, (transit) (result)
logging?,
retention?)
クライアント側: ブラウザはツールをダウンロードします& #39; s JavaScript 一度, そして、その後、すべて - 入力, 処理, 出力 - あなたのマシンのタブで発生します. network を越えた唯一のものはコードでした。
Their server → your browser
(code) (input + processing + result, all local)
この区別は、あなたが管理しているサーバー上のデータに何が起こるかをリストするまで学術的に聞こえます。アクセスログやアプリケーションログに記録される可能性があります。何かがスローされたときにリクエストコンテキストをスナップショットする Sentry などのエラートラッカーによってキャプチャできます。オペレーターの "deleted" の後もバックアップに長く保持できます。ログアクセスを持つ従業員なら誰でも読むことができます。侵害で一掃される可能性があります。そして、いくつかの "free tool" オペレーターを使用すると、実際の製品である - 分析を通じて収益化されるか、トレーニング データとして販売されます。
これらのどれも悪意を必要としません。 デフォルトのロギング構成だけで、ほとんどの場合で処理できます。 私が使用したそのアンシリアライザのオペレーターは、おそらく顧客の SMTP パスワードを見たことがないでしょう。 しかし、「おそらく」はセキュリティの体制ではありません。
なぜこれが他の誰よりも開発者にとって大きな問題なのですか?
私たちが貼り付けたもののせいです。 平均的なユーザーは、テキストの段落を単語カウンターに貼り付けます。 開発者は次のように貼り付けます
ライブ トークンを使用した API レスポンス。 You' re debugging an integration, you copy the whole response - headers included - and format it to read it.あなたは、デバッグの統合、あなたは全体の応答をコピー - ヘッダーが含まれています - そしてそれを読み取るためにフォーマットすること Authorization: Bearer ... ヘッダーは、フォーマッタがどこにでもあるところに行きました。 ギガーディアン 秘密の状態が広がる 調査の結果、2023 年だけでも公開 GitHub コミットで公開された約 1,280 万件の秘密が判明しました。オンライン ツールについて同等の数値を公開している人はいません。なぜなら、GitHub とは異なり、ツール オペレーターと #39; ログ aren't は公にスキャン可能だからです。それと #39;s は安心できません。これは、漏れの表面が見えないことを意味します。
JWTS。 JSON Web Token は、暗号化されず、base64url エンコードされます - RFC 7519 これについてはっきりとしています。 サーバー側のデコーダに貼り付けるすべてのトークンのペイロードは、ユーザーの ID、電子メール、役割、および有効期限を引き渡します。 トークンがまだ有効な場合は、作業中のセッションの資格情報を引き渡す可能性があります。 をローカルにデコードして JWT デコーダ 代わりに。
SQL で実際のデータを含む。 フォーマットしているクエリには、 WHERE email = '[email protected]' その中の句と、テーブル名はスキーマ全体をスケッチします。 ザ・ SQL フォーマッタ それをあなたのタブに残します。
構成ファイル。 wp-config.php 値、 .env 内容、クベルネテスのマニフェスト、 database.ymlー configuration is where credentials live. I' validated YAML files that contained every secret my Laravel app had. That' s クライアント側を通過したいペーストです YAML バリデータ、フォームの投稿ではありません。
シリアル化された WordPress データ。 イントロによると、私の個人的な失敗です。 WordPress はオプションとメタデータを PHP シリアル化された文字列として保存し、それらをデバッグすることはシリアル化解除を意味します PHP アンシリアライザ 顧客のデータがなくても、マシンから離れます。
これらのカテゴリのいずれかの不注意なペーストは、誰も検出、報告、クリーンアップすることのないセキュリティ インシデントです。
ツールが実際にクライアント側であることをどのように確認しますか?
これは、クライアント側のアーキテクチャについて私が最も気に入っている部分です。 誰もがプライバシー ポリシーを信頼する必要はありません。 クレームは機械的に検証可能です。
- ツールのページを開きます。
- DevTools を開く (F12) → ネットワーク タブ。 「ログを保存」をチェックしてください。
- いくつかの認識可能なテストデータを貼り付けます -
MY-SECRET-TEST-12345作業 - そしてツールを実行します. - リクエストリストを見てください。
ツールがクライアント側の場合、最初のページの読み込みと静的アセットが表示され、その後、 なんでもない 処理するとき。 convert/format/process ボタンを押したときにリクエストが発火した場合は、リクエストをフィルタリングしてテスト文字列のペイロードを検査します。見つかりましたか? サーバー側。完了 - これには 30 分かかりました。そのツールについては、プライバシー ポリシーで示されるよりも詳しく知ることができます。
Toolz.dev に関する 2 つの誠実さのメモ。これにより、両方の方法がカットされるためです。 まず、サイトはページ ビュー数の分析を読み込み、追跡します あれか 使用制限のためにツールが使用されましたが、決して使用されませんでした なに? あなたはそれに入れます。 run the Network check yourself; the input never appear in any request. 第二に、クライアント側には本当の制限があります: あなたのブラウザは仕事をするので、4 GBのビデオトランスコードはisn& #39; tがタブで起こっているツールのフォーマッタ/コンバータ/エンコーダカテゴリの場合、しかし、現代のJavaScriptは十分以上の速度です - 通常、サーバー側よりも高速です, there& #39; sは、ラウンドトリップをまったくアップロードしないので。
サーバー側とクライアント側: 単純な比較
| サーバー側のツール | クライアント側のツール | |
|---|---|---|
| 処理が行われる場所 | オペレーターのサーバー | あなたのブラウザ |
| データ送信? | そう、毎回 | いいえ - ツール& #39; のコードのみがダウンロードされます |
| オペレーターがログに記録/保持できます | はい、よくデフォルトで | いいえ - オペレータは決してそれを受け取りません |
| ツールの違反で暴露された | そう、保持されている場合 | いやー |
| あなたが確認できる | いいえ - あなたはポリシーを信頼しています | はい - DevTools Networkタブ、~30 秒 |
| GDPR プロセッサー契約が必要 | はい、個人データ(アート。 28) | 第三者による処理は行われません |
| ロード後にオフラインで動作 | いやー | よくある |
| 一般的な開発タスクの速度 | アップロード + キュー + ダウンロード | 即時 - ネットワーク往復なし |
| 計算量が多い (ビデオ、巨大なファイル) | より適している | デバイスによって制限されます |
GDPR はこれについて何と言っていますか?
I'私は弁護士ではなく開発者なので、これを法的アドバイスではなくエンジニアリングのコンテキストとして扱いますが、EU ユーザー データを扱う人にとって概要は重要です。
下に 規則 (EU) 2016/679 (GDPR) 、もしあなたが個人データ - customer' s support export, an API response with user records - を取り、それをサードパーティ' s serverを通してプッシュすれば、そのサードパーティはあなたに代わって個人データを処理していることになります第28 条には、データ処理契約が必要と書かれています何人の無料のオンラインフォーマッタがDPAを提供しているかを自問してください。
クライアントサイドツールは、巧妙な法律起草ではなく、アーキテクチャを通じて、質問全体を回避します: データはプロバイダに到達しないため、紙の上へのサードパーティの処理はありません。 データの最小化 (第5 条 (1) (c)) は、可能な限り最も文字通りの方法で満たされます - プロバイダが収集するデータの量はゼロです。 同じロジックは、HIPAA (健康データが非準拠のサーバーに到達することはありません) 、 SOC 2 監査 (データパスに精査されていないサブプロセッサはありません) 、 および PCI DSS に役立ちます。
明確にするために: クライアント側のツールを使用しても、できません あなたの製品 GDPR準拠。開発ワークフロー内で、驚くほど一般的な特定のリークを 1 つ削除します。これは、開発者がサポート チケットで役に立とうとして、個人データをランダムな Web サイトに貼り付けるリークです。
サーバーに触れてはいけないタスクはどれですか?
私の個人的なトリアージは、リークがどれだけ害を及ぼすかで分類されています。
決してサーバーサイド - 資格情報を含むか、または含意します:
- API レスポンスとペイロードのフォーマット: JSON フォーマッタ
- トークンを解読する: JWT デコーダ、 Base64 コンバーター
- クエリの書式設定: SQL フォーマッタ
- 構成の検証: YAML バリデータ
- WordPress データのデバッグ: PHP アンシリアライザ
- ハッシュ化と値の比較: ハッシュジェネレーター
- 資格情報の生成: パスワード ジェネレーター、 uuid ジェネレーター
クライアントサイドを強く好む - 独占的ですが秘密ではありません:
- 内部コードまたは契約の違い: テキスト差、 json 差分
- 生産ログラインに対する正規表現のテスト: 正規表現テスター
- ログとトークンからタイムスタンプを変換する: タイムスタンプ コンバーター
- 内部スクリーンショットの圧縮: 画像圧縮機
利得は低いですが、クライアント側の方が高速です。
- 単語数: ワードカウンター
- プレースホルダー テキスト: ローレムイプサムジェネレーター
- 色とグラデーション: カラーピッカー、 グラデーションジェネ
ツールボックス全体のウォークスルーは、 開発者の生産性向上ツール ガイド そして、 コーディング ツール ガイド。
もしあなたが本当にサーバーサイドのツール - ローカル代替手段のない重い変換 - を必要とするなら、まずサニタイズしてください。 のためにリアルキーを交換してください YOUR_API_KEY、実際のメール [email protected]。 60 秒間検索と置換があり、潜在的なインシデントを非イベントに変えます。
とにかく、ほとんどのオンライン ツールがサーバー側にあるのはなぜですか?
部分的に歴史、部分的にインセンティブ。 2010 年、ブラウザは ' ジョブまで - サーバー上で大量の処理を行う必要がありました。その制約はなくなりました。最新の JavaScript エンジンと WebAssembly は、ネイティブと区別できない速度でフォーマット、変換、ハッシュ、画像圧縮を処理し、ブラウザ API (ファイル、キャンバス、Web 暗号) は I/O をカバーします。
インセンティブは厄介な問題ですサーバーサイド処理はオペレーターが使用状況を詳細に確認し制限を正確に施行し処理ロジックを専有に保ち - 最悪の場合 - データ自体を収益として扱うことを可能にします決して受け取らないツールはcan'tあなたのデータを収益化します, これは正確にいくつかのオペレーターdon' にもかかわらずアーキテクチャを望まない理由です ' s 技術的に簡単になりました。
Toolz.dev のツールを構築したとき、クライアント側は実際に より単純な よりプライベートな選択だけでなく、エンジニアリングの選択: 拡張する処理サーバーはなく、安全にアップロードする必要もなく、保存ポリシーも作成する必要はありません。また、すべてのツールは、Web アプリとデスクトップ アプリで同じように機能します。ロジックは単純なプラットフォームに依存しないタイプスクリプトです。 プライバシー ストーリーとエンジニアリング ストーリーは同じ方向を示しています。 それが起こったときはまれです。勝ち取ってください。
よくある質問
「クライアント側処理」とは、実際には何を意味するのでしょうか?
すべての計算は、ブラウザー、デバイス上の JavaScript (または WebAssembly) で行われます。 サーバーの唯一の役割は、ページが読み込まれたときにツールのコードを配信することです。 入力はネットワーク リクエストに表示されません。これは、[DevTools ネットワーク] タブで確認できます。
ツールがクライアント側であるかどうかを確認するにはどうすればよいですか?
DevTools (F12) → Networkタブを開き、 "Preserve log," を有効にして認識可能なテストデータをツールに貼り付け、処理します テスト文字列を含むリクエストが発火しない場合、ツールはクライアント側になります Chromeでは、DevToolsを"Offline" に切り替えることもできます ページの読み込み後 - 真のクライアント側ツールが動作し続けます。
クライアント側のツールはサーバー側のツールよりも遅いですか?
一般的な開発者タスクの場合、they're faster - there's アップロードなし、キューなし、ダウンロードなし。 2 MB JSON ファイルをローカルで処理するのはほぼ瞬時ですが、サーバーの往復ではすべてのステップで遅延が追加されます。例外は重い計算 (大きなビデオ トランスコード、ギガバイト スケールのファイル) で、強力なサーバーがブラウザ タブに勝つというものです。
Toolz.dev は何か収集しますか?
ページビュー分析と匿名ごとのツール使用量カウント (レート制限に使用) - ただし、処理するコンテンツは決して使用しません。入力、出力、アップロードされたファイルはブラウザーに残ります。これは、信頼を帯びなければならないものではなく、ネットワーク タブ チェックで検証できます。
JWT をオンライン デコーダーに貼り付けるのは本当に危険ですか?
はい、ほとんどの開発者が想定しているよりも多くです。 RFC 7519 によれば、JWT ペイロードは暗号化されておらず、エンコードされています。トークンを保持している人は誰でもクレームを読み取ることができ、トークンが 't 期限切れになっている場合は、ライブ資格情報として使用できる可能性があります。サーバー側のデコーダに 1 つ貼り付けると、有効と思われるセッション トークンが未知のサードパーティに送信されます。クライアント側のデコーダを使用します。
クライアント側のツールを使用すると、GDPR に準拠しますか?
ツールを 1 つだけ選択しても、準拠することができません。 クライアント側のツールが取り除くのは、特定のリスクです。システムからの個人データが、精査されていないサードパーティ プロセッサに到達することになります (これには、無料のツール サイトではほぼ確実に、第 28 条のデータ処理契約が必要です)。 あなた自身の製品の義務は影響を受けません。
雇用主は、私がクライアント側のツールで処理することを確認できますか?
ネットワーク監視は、クライアント側のツールに何を入力するかではなく、どのサイトにアクセスするかを確認します - there' 観察するための入力を運ぶリクエストはありません。デバイス自体にインストールされているエンドポイント監視 (画面キャプチャ、キーロガー) は、ツール アーキテクチャに関係なくすべてを確認するため、正直な答えは、ネットワーク経由ではなく、おそらくエンドポイント経由です。
私の仕事に代わるクライアント側の代替手段がなかったらどうしますか?
貼り付ける前にサニタイズ: クレデンシャルをプレースホルダー (YOUR_API_KEY)、実際の個人データをダミー値に交換し、ホスト名と内部 URL を取り除きます。 次に、ツールのプライバシー ポリシーをチェックしてログと保持の言語を確認し、検査できるオープン ソース ツールを選択し、「無料のクローズド ソース、サーバー側」をリスクの最も高い組み合わせとして扱います。
クライアント側ツールとサーバー側ツールの違いは何ですか?
クライアント側ツールは、ブラウザにコードを出荷し、そこにそれを実行します; サーバー側ツールは、あなたがdon& #39; t制御し、そこにそれを実行マシンにデータを出荷します.機能的には、出力が同一であることができます - 違いは完全に誰にあなたの入力を保持することになるかについてです.サーバー側ツールを使用すると、あなたのデータは、しかし、短時間ですが、他の誰か& #39; sディスクに、それらのログに、およびそれらのバックアップに存在します。
オンライン JSON フォーマッタと美容器は安全に使用できますか?
カテゴリーではなく実装次第です JSONの書式はJavaScriptで行うのは些細なことですから クライアント側の書式設定者は 何も送信する理由がありません - そして ネットワークタブチェックは10 秒で決済します ここではいつもより注意しましょう JSONの開発者が フォーマッタに貼り付けるのは トークンやメールアドレス 内部IDを含む API応答が 不釣り合いに多いからです。



