セキュリティ上の理由から、IE 6.0ブラウザで開くことを許可しないWebサイトを開発しています。私はすべてのブラウザが私たちがウェブページを要求するときに送信したユニークなヘッダー情報を持っていることを知っています。IE 6.0またはjavascript、PHP、インターネットエクスプローラ6.0のブラウザからウェブサイトを開くことを禁止しますか?
答えて
確かに、this out(CGI方法、PHP方法、JSメソッド)をチェック
PHP:
<?php
if (eregi("MSIE",getenv("HTTP_USER_AGENT")) ||
eregi("Internet Explorer",getenv("HTTP_USER_AGENT"))) {
Header("Location: http://www.domain.com/ie_reject.html");
exit;
}
?>
JS:
<!--
if (navigator.appName == "Microsoft Internet Explorer") {
document.location = "http://www.domain.com/ie_reject.shtml";
} else {
document.location = "http://www.domain.com/realhomepage.html";
}
// -->
<!--[if (gt IE 6)|!(IE)]><!--> <html> Entire website? </html> <!--<![endif]-->
冗談はさておき、あなたがラHTML5 BoilerplateàIEの条件付きコメントを使用することができます
<!doctype html>
<!--[if lt IE 7 ]> <html lang="en-us" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en-us" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en-us" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]> <html lang="en-us" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en-us" class="no-js"> <!--<![endif]-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge;chrome=1" >
<meta charset="utf-8">
...
インターネットエクスプローラでのみ動作するため、動作しません。そのために下位レベルの目に見えるコメントを使用する必要があります。 <! - [if IE 6]> IE 6の特別な手順はこちら –
@Joe:良い点 - 固定 – rsp
実際の答えは次のとおりです。ヘッダー内の特定のUAはセキュリティ上の理由からスプーフィングするのが簡単ではなく、誰かがIE6を使用したくない場合は、簡単なプロキシを使用してアプリを思考させることができますそれはIE8です。
つまり、PHPでget_browser関数を使って簡単に行えます。
は、あなたがこのような条件付きコメントを使用することができますhttp://php.net/get_browser
信頼性の高いホストサーバのbrowsercap.iniファイルに大いに依存しています... –
幸いにも、IEは特別な条件付きコメントを尊重するのに十分親切ですので、 '<! - [if(gt IE 6)|! (IE)]> 'これはIE6以外のすべてでレンダリングされます '<! - ' - ヘッダーに頼る必要はありません。 – rsp
それでも、条件付きコメントを削除するプロキシを実装することで回避できます。私はかなりの解決策については異論を唱えていませんが、セキュリティの観点から疑問が提起されているので、これを考慮する必要があります。 –
を参照してください。
<!--[if IE 6]>
Special instructions for IE 6 here
<![endif]-->
インターネットエクスプローラ6の修正されていないバージョンではこのコードが実行され、他のブラウザではこのコードは実行されません。しかし、これがあなたのセキュリティ上の懸念を満たすかどうかはわかりません。すべてが偽造される可能性があります。
あなたも...
をヘッダ情報が、その同じ問題をチェックすることができますがここでやろうとしているものについての詳細を教えてください。
IEの場合、MicrosoftはIEのバージョンを検出できる特別なタグを追加しているので簡単です。これは、User-Agent
ヘッダーを使用しようとするよりもずっと信頼性があります。このような何かが(あなたのHTMLの頭の中で)
<!--[if lte IE 6]>
<meta http-equiv="refresh" content="0;url=http://yoursite.com/ie6_is_a_steaming_pile.html">
<[endif]-->
を動作するはず明らかに自分のサイトとのリンクを交換し、おそらく;-)
より如才ない何かあなたはすべてのページに含めることができるいくつかの簡単なPHP MSIEユーザーを捕まえるために:
if(preg_match('/MSIE/i',$_SERVER['HTTP_USER_AGENT'])){
die('Your browser is not allowed');
}
さらにこれを達成するために、もっと複雑で包括的な方法がたくさんあります。
あなたが本当にこれをしたい場合は... PHPで
:
if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE 6")) {
// exit or redirect or whatever...
exit();
}
私が言う:RIGHTそれを行います!専用のクラスを用意し、そこにあるすべてのブラウザとデバイスのUSER_AGENTSをすべてトレースし、それらのデータベースを作成し、それを実際のセッションルーチンに統合します。ユーザが来るたびに、ユーザエージェント情報[タイプ、名前、バージョン]を決定し、表示ルーチンにデータを渡します。このルーチンは、印刷するコンテンツとデザインテンプレートを決定する必要があります。この方法で、あなたはSEOに優しい、使いやすい、きちんとした、整理しやすい[=開発者にやさしい]ウェブサイトを構築することができます - 今日のインターネットで遭遇することは非常にまれなALL IN ONE ...だから、それは正しいです!
User-Agentヘッダーに頼る必要はなく、あらゆる種類のサーバー側またはクライアント側のスクリプトを使用する必要はありません。これは普通の静的なHTMLで行うことができます。条件付きコメントについては、私の答えなどを参照してください。 – rsp
更新と同時にレッスンを教える:
[OK]を、ので、それは完全にそれらをブロックしません。しかし、IE6と呼ばれる凶悪な惨劇を取り除くことから彼らの一部を騙すかもしれない。マイクロソフト!
私は実際には、新しいブラウザをインストールするよりも簡単なIE7やIE8の代わりに[Chrome Frame](http://www.google.com/chromeframe)をインストールするように要請しています。 IE8はAcid3テストに完全に失敗します)。 – rsp
私は同意しない、私はテスト以外のIEに触れていない。私は彼らが愛する恐竜をあきらめて "トリッキー"になっていることを知っているのが好きです...それは私を幸せにします! – bpeterson76
- 1. WebClientがwikipediaを開くことを禁止していますか?
- 2. Androidからウェブサイトからのビデオのダウンロードを禁止する
- 3. ユーザーが2つの同じ子ウィンドウを開くことを禁止しますか?
- 4. リモートからIIS 6.0のアプリケーションプールを開始/停止する方法
- 5. google api infoWindowをページロード時に開くことを禁止する方法
- 6. file_get_contentsが403を返すことを禁止しました
- 7. アンドロイドのウェブサイトからキーボードを開く
- 8. 私のウェブサイトからgoogleマップを開く
- 9. ブラウザからアプリを開くか、マーケットを開いてアプリをインストールします
- 10. Blackberry:Officeアタッチメントはメールではなくブラウザから開くことができます。
- 11. jquery ajax call return 403インターネットエクスプローラで禁止されたエラー
- 12. Webサイトを開くことができませんします。http:// ...禁断の
- 13. ubuntuでブラウザを開くことができませんか?
- 14. Facebookアプリケーションからのユーザーの禁止
- 15. ストリートアドレスフィールドからの電子メールアドレスの禁止
- 16. winformからWebブラウザを開く
- 17. WebブラウザからTIFFファイルを開く
- 18. ブラウザ内からローカルファイル/フォルダを開く
- 19. QWebViewから外部ブラウザを開く
- 20. ブラウザからギャラリーに画像を開く
- 21. アンドロイドキーボードが開くと、ドキュメントのリフロー/ブラウザのサイズ変更を防止します。
- 22. C#では、ブラウザを開くことなく、バックグラウンドでURLを開くことは可能ですか?
- 23. Parallel.ForEachの使用を禁止または禁止する
- 24. 防止メンバーasp.netのウェブサイトのページにログイン視聴から(サインアウト)、ユーザーのブラウザを押すことにより、バックボタン
- 25. 外部ソースからのコピーと貼り付けを禁止
- 26. myapp.herokuapp.comへのアクセスを禁止することはできますか?
- 27. どのように私のリンク(画像、.cssファイル、.jsファイル)を自分のウェブサイトに置くことを禁止しますか?
- 28. 禁止403 CSRFエラーHTMLページから
- 29. コンパイル時にクラスからの派生を禁止することはできますか?
- 30. JSON AJAXをjqueryで禁止することはできますか?
ありがとうございます。 –
と、もし私がMozillaとchromeとしたいのなら。そんなことは絶対にしません 。上記のphtコードで変更する必要がありますか? –
'eregi()'のPHPマニュアルページにあるように、PHP 5.3では非推奨となっており、引き続き使用することはお勧めしません。代わりに 'preg_match()'やもっと単純に 'strpos()'をこのようなアプリケーションに使うべきです。 –