ステージング環境に関する Web サイトに取り組んでいます。ステージング環境では、Web サイトは http 基本認証を使用します。また、http 基本認証が有効になっていると、Facebook のソーシャル ボタンとツイートの共有ボタンが機能しないことがわかりました。これに対する回避策はありますか? または、http基本認証を完全に無効にする必要があります
2 に答える
より良い解決策は、 Facebook アプリケーションのセキュリティに関するドキュメントで提供されている情報を利用することです。2012 年 8 月現在、Facebook は、サーバーが外部サイトにアクセスするために使用する IP アドレスを次のようにリストしています。
31.13.24.0/21
31.13.64.0/18
66.220.144.0/20
69.63.176.0/20
69.171.224.0/19
74.119.76.0/22
103.4.96.0/22
173.252.64.0/18
204.15.20.0/22
2401:db00::/32
2620:0:1c00::/40
2a03:2880::/32
更新されたリストを取得するには、次のコマンドを使用できます -
whois -h whois.radb.net -- '-i origin AS32934' | grep ^route
したがって、このPHPバージョンに似たコードを使用します-
if(in_array($_SERVER["REMOTE_ADDR"],$arrayOfIPAddresses) === TRUE){
// current request is coming from Facebook's IP
}else{
// current request is not from Facebook
}
この解決策は、基本認証方法がどれだけ重要かによって異なります。ただし、問題を正確に特定しました。実際、パスワードが必要なページには Facebook のサーバーからアクセスできません。
このパスワード認証を無効にする意思があるようで、その目的はステージング サーバーへのアクセスをセキュリティで保護するのではなく、難読化することであると思われます。これが正しい場合、Facebook のサーバーがデータにアクセスできるようにする簡単な方法がいくつかありますが、ページにアクセスした平均的なユーザー (おそらく偶然) はパスワードを入力する必要があります。そのような方法の 1 つは、リクエストとともに送信されるユーザー エージェントを検査することです。
PHP での例 -
if(stristr($_SERVER["HTTP_USER_AGENT"],'facebook') === FALSE){
// require password
}else{
// allow request with user agent containing Facebook
}
ここで、ユーザー エージェント文字列はスプーフィング/偽造される可能性があり、100% 信頼できるほど正確であると見なすべきではないことを言わなければなりません。