外部への送信手段を持たないこと、および御社での確認方法
リードテンダーは、入力された内容を送信する手段を持ちません。 そう申し上げるだけでは意味がないので、何をしているかと、 御社で確かめる方法を並べます。数分で裏が取れます。
画面はすべて、1つのHTMLファイルの中に文字・数値・図・処理が入った状態で配信されます。 外部のCDN、フォント配信、アクセス解析、タグマネージャは一切使っていません。 図はHTMLの中に書かれたSVGで、画像ファイルの読み込みもありません。
配信している全ページ(公開6枚+契約者向け20枚)を機械的に調べた結果です。
| 調べたもの | 件数 | 意味 |
|---|---|---|
外部からの読み込み(src / link) | 0 | 他社のサーバーに接続しません |
@font-face・外部URLの参照 | 0 | 書体はOS内蔵のものだけを使います |
<form> | 0 | 入力欄の内容を送る先がありません |
fetch・XMLHttpRequest | 0 | 裏側での通信を行いません |
navigator.sendBeacon | 0 | 画面を閉じるときの送信もありません |
WebSocket・EventSource | 0 | 常時接続を張りません |
<iframe>・動的 import() | 0 | 後から別のものを読み込みません |
document.cookie | 0 | ページ自身はCookieを作りません |
上記は「作りとしてそうなっている」という話です。 将来まぎれ込んでも止まるように、応答ヘッダで Content-Security-Policy を出しています。ブラウザが実行前に遮断します。
Content-Security-Policy: default-src 'none'; 許すものだけを挙げ、挙げていないものは全て禁止 connect-src 'none'; どこへも通信できない form-action 'none'; どこへも送信できない script-src 'self' 'unsafe-inline'; style-src 'unsafe-inline'; img-src 'self' data:; font-src 'self'; base-uri 'none'; frame-ancestors 'none'
'unsafe-inline' は、このページ自身に書かれている処理と装飾を
動かすために必要な指定です。名前に反して外部の読み込みを許すものではありません。
外部への接続は connect-src 'none' が、送信は form-action 'none' が
それぞれ塞いでいます。
ウォッチリスト・保存した検討案件・前回使った会社名は、 閲覧しているパソコンのブラウザの中(localStorage)にだけ残ります。 当方のサーバーには送られません。 上表のとおり送信する手段が無いため、送りたくても送れない構造です。 ブラウザの閲覧データを消せば、同時に消えます。
「一切何も外に出ない」とは申しません。次の3つは発生します。
| 発生するもの | 内容 |
|---|---|
| 通信の記録 | ページを開く以上、接続元IPアドレス・時刻・開いたページのURLは 配信基盤(Cloudflare)に記録されます。これは避けられません。 画面に入力された数値は、そもそも送信されないため含まれません。 |
| ログイン用のCookie | 契約者向けの画面は Cloudflare Access で保護しており、認証後に
CF_Authorization というCookieが1つ置かれます。
ログイン状態の保持だけに使うもので、追跡や広告には使いません。
公開ページには置かれません。 |
| アドレスの 読み取り防止 |
ページに書いた連絡先アドレスを、Cloudflare が暗号化した状態で配信します。
迷惑メールを送るために、ウェブページを次々に巡回して
メールアドレスを自動で集めて回るプログラムがあり、それに拾われないようにするためです。
閲覧者のブラウザで元に戻す処理を同じドメインの中から読み込みます
(/cdn-cgi/scripts/…/email-decode.min.js)。
他社のドメインへ接続するものではありません。 |
いずれも数分で終わります。ツールの導入は不要です。
このページで Ctrl + U(Macは ⌘ + Option + U)を押すと、
配信された内容がそのまま表示されます。https:// で検索してください。
出てくるのは出典として挙げている国土交通省・入札情報サービスへのリンクだけで、
src= や <link> による読み込みは1件もありません。
F12 を押して Network タブを開き、ページを再読み込みしてください。
接続先のドメインが leadtender.jp だけであることが分かります。
画面を操作している間も、新しい通信が発生しないことをご確認いただけます。
同じ Network タブで最初の項目を選び、Response Headers の
Content-Security-Policy をご覧ください。上に挙げた内容と一致します。
コマンドでも確認できます。
curl -sI https://leadtender.jp/ | findstr /i content-security-policy
Mac・Linux では curl -sI https://leadtender.jp/ | grep -i content-security-policy
ページを Ctrl + S で保存し、ネットワークを切断した状態で開いてください。 まったく同じように表示され、同じように動作します。 外部から何も読み込んでいないことの、最も分かりやすい確認方法です。
御社のプロキシやファイアウォールの記録で、接続先が
leadtender.jp(および配信基盤である Cloudflare のIPアドレス)に
限られることをご確認いただけます。
| 宛先 | 用途 |
|---|---|
leadtender.jp(HTTPS / 443) |
画面の配信。これだけです |
*.cloudflareaccess.com |
契約者向け画面のログイン(確認コードの入力画面)。 公開ページの閲覧には不要です |
| 配信 | Cloudflare Pages。静的ファイルのみで、実行環境を持ちません |
|---|---|
| 認証 | Cloudflare Access。登録されたメールアドレスに届く確認コードで認証します。 当方はパスワードを預かりません |
| 通信 | HTTPS のみ。HTTP は自動的に HTTPS へ切り替わります |
| データの出どころ | 各地方整備局および入札情報サービス(統合PPI)が公表している資料のみ。 御社から資料をお預かりする必要はありません |
| 当方が持つ御社の情報 | ご契約者のメールアドレスのみ(ログインの許可に使います)。 画面で入力された数値は保持していません |
セキュリティ要件のご確認、チェックシートへのご記入等、 お気軽にお問い合わせください。 ここに挙げていない点についても、確認方法とあわせてお答えします。