<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web開発</anchor>の現場では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">本番サーバー</anchor>とは別に<dfn>開発用Webサーバー</dfn>を設けることがよくあります。</p><section><h1>種別</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> 
複数の関係者で利用するなどの理由で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">本番サーバー</anchor>とは異なる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ドメイン</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>などを用意し動作させる恒久的な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">開発サーバー</anchor>と、
開発者の手元などで一時的に動作させるサーバーがあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> 
前者は恒久的とはいっても継続的な開発のため文字通り恒久的に運用する場合もあれば、
特定の短期開発目標の専用で短期間のみ運用する場合もあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> 
後者は<dfn>ローカルサーバー</dfn>などと呼ばれることもありますが、
広く通用する共通の呼称はないと思われます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webアプリケーションフレームワーク</anchor>の類などにはローカル開発用の特殊な
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webサーバー</anchor>機能が含まれている場合があります。
開発中の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webアプリケーション</anchor>を手軽に起動できるもので、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">デバッグ</anchor>のための便宜機能を利用できることが多いです。</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web API</anchor> を外部開発者に提供している場合などに、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">本番サーバー</anchor>とは異なるものの本番同様に運用される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">開発サーバー</anchor>が外部に公開される場合もあります。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> 
例えば<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">決済</anchor>機能を提供する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webアプリケーション</anchor>は、
外部の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webアプリケーション</anchor>の開発者が実際の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">決済</anchor>は行わずに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">決済</anchor>機能の自アプリケーションへの組み込みを実装・動作確認できるよう、
外部開発者向け<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">開発サーバー</anchor>を提供していることがあります。</p></example></section><section><h1>開発サーバーの設定</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">開発用サーバー</anchor>を用いて関係者だけで事前に開発・デバッグ・確認に供する場合、
次のように設定するべきです。</p><section><h1>認証</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> 適切な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLSクライアント認証</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP認証</anchor>を設定するのが好ましいです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> アクセス元<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IPアドレス</anchor>による制限が行われることもよくありますが、
開発者や外部協力者のネットワーク環境の違いなどで悩まされがちです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> 
これは、第三者に開発中の状態が漏洩することを防ぐために必要な措置です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オープンソース</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webアプリケーション</anchor>など、
特に秘匿するべきものが無い場合には、省略して構いません。</p></section><section><h1><code>robots.txt</code></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 
<code>/robots.txt</code> にアクセスがあった時、次のような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">テキストファイル</anchor>を返すべきです。</p><figure><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> すべてを拒否する <code>robots.txt</code></figcaption><pre class="code">User-agent: *
Disallow: /</pre></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> 
これは、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">検索エンジン</anchor>その他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ロボット</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クロール</anchor>されることを防ぐため必要な措置です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認証</anchor>により<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">検索エンジン</anchor>からアクセスされないはずの場合でも、
念のため設定しておくことをおすすめします。</p></section><section><h1><code>&lt;meta name=robots&gt;</code></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML文書</anchor>を返す場合、
<code>head</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>内に次のように記述するべきです。</p><figure><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> すべてを拒否する <code>&lt;meta name=robots&gt;</code></figcaption><pre class="code">&lt;meta name=robots content=noindex,nofollow,noarchive&gt;</pre></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> 
これは、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">検索エンジン</anchor>その他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ロボット</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クロール</anchor>されることを防ぐため必要な措置です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認証</anchor>により<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">検索エンジン</anchor>からアクセスされないはずの場合でも、
念のため設定しておくことをおすすめします。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> 
なお、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認証</anchor>など適切な措置を他に講じない場合、
<code>&lt;meta name=robots&gt;</code>
のみを指定しても当該 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor>
が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">検索エンジン</anchor>に掲載されたり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アーカイブ</anchor>系サービスに保存されたりすることを拒むことはできませんから、
注意が必要であります。</p></section><section><h1>リファラーの無効化</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リンク</anchor>等から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">referrer</anchor> が送信されないようにするべきです。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <cite>Referrer を制御する - Qiita</cite> (<time>2017-05-29 13:44:56 +09:00</time>) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://qiita.com/wakaba@github/items/707d72f97f2862cd8000">https://qiita.com/wakaba@github/items/707d72f97f2862cd8000</anchor-external></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> 
これは、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リンク</anchor>の参照元 (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">referrer</anchor>) として<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">開発サーバー</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor>
が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リンク先</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>に送信されてしまうことを防ぐため必要な措置です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> 
なお、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">referrer</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSRF</anchor> 防止など、
当該<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">開発サーバー</anchor>自身も必要としている場合があります。
その場合は完全に無効化するのではなく、自サーバーへの送信は認めるような指定が必要となります。</p></section><section><h1>共有ボタン</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SNS</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">共有</anchor>のボタン類が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webページ</anchor>中に含まれる場合、
その対象として指定する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> を <code>https://www.example.com/</code> に置き換えるなどするべきです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> 
これは、誤操作により<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">開発サーバー</anchor>から<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">共有</anchor>してしまうことや、
ボタン表示のために <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SNS</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>に送信してしまうことを防ぐため必要な措置です。</p></section><section><h1>メール送信、 Web Hooks</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">インターネットメール</anchor>その他<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">電子メール</anchor>や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IM</anchor>
の送信機能、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web Hooks</anchor>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プッシュ通知</anchor>、
その他これらに類する機能が備わっている場合、
関係者以外に送信されることがないように必要に応じて設定するべきです。</p></section><section><h1>注意</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">本番サーバー</anchor>でこれらの措置を解除すること、
初の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">本番サーバー</anchor>公開後に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">開発サーバー</anchor>からこれらの措置が抜け落ちてしまわないことに注意。</p></section></section><section><h1>実装</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <code>server.pl</code></p></section><section><h1>メモ</h1></section></body></html>