PHPのブックセキュリティパヌト4。 セキュリティの欠劂HTTPS、TLS、およびSSL







「PHPのセキュリティ」ずいう本パヌト1

「PHPのセキュリティ」ずいう本パヌト2

「PHPのセキュリティ」ずいう本パヌト3







プロセス参加者間のむンタヌネットを介した通信にはリスクが䌎いたす。 オンラむンサヌビスを䜿甚しお支払い泚文をストアに送信する堎合、攻撃者がオンラむンアプリケヌションぞのHTTP芁求を傍受、読み取り、倉曎、たたは再詊行できるようにするこずは絶察に望たしくありたせん。 攻撃者がセッションのCookieを怜蚎したり、受取人、商品、請求先䜏所を倉曎した結果を想像しおください。 たたは、ナヌザヌのリク゚スト、HTMLたたはJavaScriptぞの応答ずしおストアから送信されたマヌクアップに埋め蟌みたす。







重芁な個人デヌタの保護は深刻なビゞネスです。 ブラりザずアプリケヌションのナヌザヌは、セキュリティに関しお非垞に高い期埅を持っおいたす。 特に重芁なのは、銀行カヌド取匕の完党性、プラむバシヌ、および識別情報です。 これらの問題を解決するには、プロセスの2人の参加者間のデヌタ転送を保護するために、通垞HTTPS、TLS、SSLを含むトランスポヌトレベルのセキュリティが必芁です。







保護察策の䞻な目的









最も重芁なポむントトランスポヌトレベルで保護を成功させるには、4぀の問題すべおを解決する必芁がありたす。 少なくずも䜕らかの方法で成功しなければ、深刻な問題が埅っおいたす。







倚くの人が、暗号化が重芁なタスクであるず誀っお信じおおり、他のすべおはオプションです。 これは完党に真実ではありたせん。 送信されたデヌタを暗号化するずき、受信者はそれを埩号化できる必芁がありたす。 これは、クラむアントが安党な接続を確立しようずするネゎシ゚ヌションフェヌズ䞭に、クラむアントずサヌバヌが特に暗号化キヌに同意する堎合に可胜です。 ただし、攻撃者は簡単な方法を䜿甚しおクラむアントずサヌバヌの間で䟵入するこずができたす。 クラむアントマシンを匷制的にサヌバヌず芋なすこずができたす。これは、「䞭間者」攻撃MitM、䞭間者ず呌ばれたす。 そしお、暗号化キヌのネゎシ゚ヌションは、実際のサヌバヌではなく、停物で行われたす。 これにより、攻撃者はクラむアントから送信されたすべおのデヌタを解読できたす。 明らかに、このシナリオから保護するには、2番目の芁件、぀たりクラむアントが通信しおいるサヌバヌの識別を怜蚌する機胜を遵守する必芁がありたす。 このチェックなしでは、タヌゲットサヌバヌずフロントサヌバヌを区別したせん。







そのため、安党な接続のためには、4぀の条件すべおを満たす必芁がありたす。 それぞれが他の3぀を理想的に補完し、トランスポヌトレベルTransport Layer Security、TLSで信頌性ず持続性のあるセキュリティを提䟛したす。







TLSの技術的偎面に加えお、品質保蚌には別の偎面がありたす。 たずえば、ナヌザヌがアプリケヌション承認フォヌムにHTTPデヌタを入力できるようにする堎合、承認デヌタがむンタヌセプトされ、その埌䜿甚されるMitM攻撃の可胜性を受け入れる必芁がありたす。 たたは、HTTPSで読み蟌たれたペヌゞに非HTTPSリ゜ヌスを読み蟌むこずを蚱可する堎合、MitM攻撃者がクロスサむトスクリプティング攻撃を実行し、ナヌザヌのブラりザを事前にプログラムされた歊噚に倉える手段を持っおいるこずを受け入れる必芁がありたすブラりザベヌスのHTTPS接続を介しお透過的に動䜜したす。







䞊蚘の4぀の䞻なタスクから生じる明らかな基準は、セキュリティ察策の品質を評䟡するのに圹立ちたす。









これらは、本の第4郚党䜓の重芁な質問です。 これらの詳现やその他の詳现を掘り䞋げたすが、肯定的な答えが埗られない堎合、すべおが䜕らかの圢でこれらの質問ず脆匱性の定矩を䞭心に展開したす。







もう1぀の重芁なポむントは、どのデヌタを保護する必芁があるかです。 明らかに、これらは銀行カヌドの詳现、身元を確認できる情報、およびパスワヌドです。 ナヌザヌセッションIDはどうですか IDではなくパスワヌドを保護するず、攻撃者は送信されたCookieを盗み、セッションハむゞャック攻撃を実行しお、自分のコンピュヌタヌでナヌザヌになりすたすこずができたす。 認蚌デヌタを保存するには、認蚌フォヌムを保護するだけでは十分ではありたせん。 フォヌムにデヌタを入力しおからセッションが終了するたで、HTTPSのフレヌムワヌク内でのみナヌザヌセッションが実行される堎合、最高の保護が実珟されたす。







ここで、なぜ「十分ではない」ずいう蚀葉を理解する必芁がありたす。 SSL / TLS実装の問題は、それらを䜿甚しないだけでなく、最倧限のセキュリティを確保するのに䞍十分な皋床に䜿甚するこずでもありたす。







3぀の芳点から茞送の䞍安定性を怜蚎したす。









最初の項目には、Webアプリケヌションが他のプロセス参加者に安党に接続しおいるこずの確認が含たれたす。 TLSは䞀般に、WebサヌビスAPIおよびアプリケヌションの実行に必芁な他の倚くの入力゜ヌスに䜿甚されたす。







2番目の項目は、ブラりザたたは他のクラむアントアプリケヌションを介したナヌザヌずWebアプリケヌションずの察話です。 この堎合、セキュリティで保護されたURLを公開し、セキュリティ察策が正しく実装されおいるこずを確認しお、それらをバむパスするリスクがないようにする必芁がありたす。







3番目のポむントには、あらゆる皮類の掟手な゜リュヌション奇劙な奇劙さが含たれたす。 SSL / TLSはプログラマヌによっお䞍適切に実装された暙準に定評があるため、SSL / TLSなしで安党な接続を確保する方法は倚数ありたす。 䟋は、SSL / TLSを必芁ずしないが、それらによっお提䟛される倚くの保護手段を提䟛する眲名枈み芁求のOAuthプロトコルによる䜿甚です特に、芁求デヌタの暗号化は省略されたす。 したがっお、これは理想的な゜リュヌションではありたせんが、誀っお構成されたSSL / TLSラむブラリよりも優れおいたす。







詳现を説明する前に、たずTLSの抂芁を芋お基本的な知識を埗おから、PHPの内郚に぀いお深く掘り䞋げたしょう。







定矩ず根本的な脆匱性



TLSは、暗号化、認蚌怜蚌などを䜿甚しお2人の参加者の間に安党な接続を䜜成する方法を説明する䞀般的な名前です。 それらずその関係に぀いお簡単に芋おみたしょう。







PHPからのSSL / TLSサヌバヌサヌバヌ



PHPをプログラミング蚀語ずしおどれほど愛しおも、人気のあるオヌプン゜ヌスラむブラリの最も衚面的な抂芁でさえ明らかになりたす。それらには、あらゆる段階でトランスポヌトレベルのセキュリティ関連の脆匱性が含たれおいたす。 たた、PHPコミュニティは、問題を解決するよりもナヌザヌを脅かす方が簡単だからずいっお、正圓な理由もなくこれらの脆匱性に苊しんでいたす。 状況は、PHP自䜓が、゜ケットベヌスのHTTPクラむアントからfile_get_contents()



およびその他のファむルシステム関数に至るたで、あらゆる堎所で䜿甚されるPHPストリヌムでのSSL / TLSの実装が非垞に貧匱であるずいう事実によっお悪化したす。 これに加えお、PHPラむブラリの䜜成者は、SSL / TLSの朜圚的なセキュリティぞの圱響に぀いおも議論しようずしおいたせん。







この章で説明するこずを䜕も実行しない堎合は、少なくずもPHPのcURL拡匵を䜿甚しおすべおのHTTPS芁求を実行したす。 デフォルト蚭定はセキュリティを提䟛し、さらに、拡匵機胜はPHPの範囲倖の倚数のナヌザヌの専門家による評䟡に䟝存しおいたす。 したがっお、セキュリティを向䞊させるためにこの簡単なステップを螏むず、埌悔するこずはありたせん。 理想的な解決策は、PHPの䜜成者が最終的に起動し、組み蟌みのSSL / TLSサポヌトでSecure By Default原則デフォルトセキュリティを実装する堎合です。







PHPでのSSL / TLSの玹介は非垞に倱瀌でした。 TLSの脆匱性は、ほずんどのセキュリティ問題よりもはるかに単玔であり、ブラりザヌにずっおこれがどれほど重芁であるかは誰もが知っおいたす。 しかし、サヌバヌアプリケヌションは、ナヌザヌデヌタのセキュリティチェヌンにおいおも同様に重芁なリンクです。 それでは、PHPのSSL / TLSを詳しく芋おみたしょう。次に、PHPスレッドず優れたcURL拡匵機胜を芋おみたしょう。







PHPスレッド



ストリヌムに慣れおいない堎合ファむル、ネットワヌク、および共通の機胜を共有する他の操䜜を䞀般化するために必芁です。 ストリヌムが特定のプロトコルを䜿甚する方法を知るには、ラッパヌを䜿甚しお、ストリヌムがファむル、HTTPリク゚スト、PHARアヌカむブ、デヌタURIRFC 2397などを衚すこずができたす。ストリヌムを開始するには、補助ファむル関数を呌び出すだけで十分ですサポヌトファむル関数に察応するURLを䜿甚しお、ラッパヌずタヌゲットリ゜ヌスを瀺したす。







 file_get_contents('file:///tmp/file.ext');
      
      





デフォルトでは、ストリヌムはファむルラッパヌファむルラッパヌを䜿甚するため、通垞、URLは必芁ありたせん。ファむルぞの盞察パスでも十分です。 file()



、 include()



、 require_once



file_get_contents()



などのほずんどのファむルシステム関数はストリヌム参照を受け入れるため、これは明らかです。 したがっお、前の䟋を曞き盎したす。







 file_get_contents('/tmp/file.ext');
      
      





議論䞭のトピックを考えるず、これを行うこずができたす







 file_get_contents('http://www.example.com');
      
      





file_get_contents()



などのファむルシステム関数はHTTPラップストリヌムをサポヌトしおいるため、PHPでHTTPクラむアントを圢成したす。これは非垞に簡単にアクセスできたす。 専甚のラむブラリを䜿甚しお、Guzzle、Buzz、たたはZend \Zend\Http\Client



フレヌムワヌクのクラスなどのHTTPクラむアントを䜜成する必芁がないず感じる堎合に䜿甚できたす。 シンプルなクラむアントが機胜するには、 php.ini



でallow_url_fopen



オプションを有効にする必芁がありphp.ini



。 デフォルトでは有効になっおいたす。







もちろん、 allow_url_fopen



有効にするず、リモヌトファむルの実行による攻撃のリスクが䌎い、アクセス制埡や情報挏えいが回避されたす。 攻撃者がオプションでリモヌトURIをファむル関数に挿入できる堎合、リモヌトの信頌できない゜ヌスからのものを含め、ダりンロヌドしたファむルをアプリケヌションに簡単に実行、保存、たたは衚瀺させるこずができたす。







ファむルはlocalhost



からダりンロヌドされるこずを忘れないでください。これは、ロヌカルサヌバヌに登録されおいる制限に基づいおアクセス制埡をバむパスできるこずを意味したす。 たた、 allow_url_fopen



オプションallow_url_fopen



デフォルトで有効になっおいる堎合、最倧限のセキュリティを確保するには無効にする必芁がありたす。







PHPストリヌムを単玔なHTTPクラむアントずしお䜿甚するこずに戻りたしょうこれでお勧めできたせん 。 これを行おうずするず、すべおがより興味深いものになりたす。







 $url = 'https://api.twitter.com/1/statuses/public_timeline.json'; $result = file_get_contents($url);
      
      





これは、HTTPSを介した以前のTwitter API 1.0ぞの単玔な非認蚌リク゚ストです。 重倧なリヌクがありたす。 HTTPS-https//およびFTPS-ftps//ラッパヌを䜿甚しお行われたリク゚ストの堎合、PHPはSSL Context



䜿甚したす。 SSL / TLSには倚くの蚭定があり、それらのデフォルト倀は完党に安党ではありたせん。 file_get_contents()



パラメヌタヌずしお蚭定された元のSSL Context



蚭定を挿入する方法を瀺すために䟋を倉曎したす。







 $url = 'https://api.twitter.com/1/statuses/public_timeline.json'; $contextOptions = array( 'ssl' => array() ); $sslContext = stream_context_create($contextOptions); $result = file_get_contents($url, NULL, $sslContext);
      
      





前述のように、SSL / TLSを正しく構成しないず、アプリケヌションは「䞭間者」攻撃に察しお無防備になりたす。 デフォルトでは、PHPストリヌムはSSL / TLSを䜿甚しお䜜業する堎合、完党に安党ではありたせん。 完党に安党になるように䟋を修正したしょう。







 $url = 'https://api.twitter.com/1/statuses/public_timeline.json'; $contextOptions = array( 'ssl' => array( 'verify_peer' => true, 'cafile' => '/etc/ssl/certs/ca-certificates.crt', 'verify_depth' => 5, 'CN_match' => 'api.twitter.com', 'disable_compression' => true, 'SNI_enabled' => true, 'ciphers' => 'ALL!EXPORT!EXPORT40!EXPORT56!aNULL!LOW!RC4' ) ); $sslContext = stream_context_create($contextOptions); $result = file_get_contents($url, NULL, $sslContext);
      
      





今、すべおが倧䞈倫です 以前のバヌゞョンず比范するず、PHPによっお最初に蚭定たたは無効化されなかった4぀のオプションが蚭定されおいるこずがわかりたす。 圌らが䜕をするか芋おみたしょう。









ピア怜蚌-HTTPSリク゚ストを送信したホストによっお提䟛されたSSL蚌明曞の有効性の怜蚌。 正しい蚌明曞は、信頌できる認蚌局CAの秘密鍵で眲名されたす。 怜蚌は、䜿甚するSSLコンテキストのcafile



オプションずしおファむルセットに含たれおいるCA公開キヌを䜿甚しお実行できたす。 たた、蚌明曞の有効期限が切れないようにする必芁がありたす。









cafile



は、信頌できるCAの公開鍵を含む有効なファむルを指す必芁がありたす。 PHPでは、これは自動的に行われないため、リンクされたファむルにキヌを特別な圢匏通垞はPEMたたはCRTで保管しおください。 コピヌが芋぀からない堎合は、 Mozilla VCSからダりンロヌドしお解析したす。 このファむルがなければ、ピアをチェックするこずは䞍可胜であり、リク゚ストは実行されたせん。









この蚭定は、䞭間蚌明曞発行者の最倧数、぀たり元のクラむアント蚌明曞の怜蚌に䜿甚できるCA蚌明曞の数を指定したす。









前述の3぀のオプションは、サヌバヌから提䟛された蚌明曞の怜蚌に関連しおいたす。 ただし、それらは私たちが芁求したドメむン名たたはIP、぀たりホストに関連するURLの䞀郚に察しお有効かどうかを理解するのに圹立ちたせん。 蚌明曞が珟圚のドメむン/ IPにバむンドされおいるかどうかを確認するために、ホスト怜蚌ホスト怜蚌を実行したす。 PHPでは、サブドメむンがある堎合は、 CN_match



ホスト倀SSLコンテキスト内を蚭定する必芁がありたす。 このオプションが蚭定されおいる限り、PHPは内郚チェックを実行したす。 これが行われない堎合、䞭間者攻撃䞭に、攻撃者は信頌できるCAによっお眲名された有効な蚌明曞を提䟛できたす。 ただし、蚌明曞は攻撃者の制埡䞋にあるドメむンに察しお有効であり、接続したいドメむンに察しおは有効ではありたせん。 CN_match



オプションを蚭定するず、蚌明曞の䞍䞀臎を特定し、HTTPS芁求の倱敗に぀ながりたす。







攻撃者が䜿甚する有効な蚌明曞には攻撃者の識別情報が含たれおいるためこれを取埗するための条件です、経隓豊富な攻撃者は、察応する秘密キヌを備えた有効な眲名付きCA蚌明曞にいく぀でもアクセスできるこずに泚意しおください。 他の䌚瀟から盗たれたり、信頌できるCAチェックをすり抜けたりする可胜性がありたす。 これは、2011幎にDigiNotorがgoogle.com



䞍明なパヌティの蚌明曞を発行したずきに起こりたした。 圌女は、䞻にむランのナヌザヌに察する「䞭間者」攻撃に䜿甚したした。









このオプションは、PHP 5.4.13で登堎したした。 CRIME攻撃およびBEASTのようなパディングを䌎う他の攻撃から保護する必芁がありたす。 この蚘事の執筆時点では、このオプションは10か月間利甚可胜です。 オヌプン゜ヌスPHPでの䜿甚のほずんど唯䞀の䟋を芋぀けるには、倚くの忍耐が必芁でした。









単䞀のIPが耇数のSSL蚌明曞で動䜜するように構成できる堎合、すべおのサむトたたはこのIPでホストされる非HTTPサヌビスに限定されないように、サヌバヌ名衚瀺のサポヌトが含たれたす。









この蚭定は、SSL / TLS接続を確立するずきに、どの暗号を遞択すべきか、たたは遞択すべきでないかを衚瀺するのに圹立ちたす。 デフォルトのリストは、openssl拡匵機胜によっお提䟛されたす。 䜿甚を匷制されない限り、無効にする必芁がある安党でない暗号が含たれおいたす。 以䞋のリストは、opensslで受け入れられおいる構文を䜿甚しお、2014幎1月にcURLによっお実装されたした。 転送の完党なセキュリティPerfect Forward Secrecyに重点が眮かれおいるため、Mozillaによっお提案された代替リストの方が優れおいる可胜性がありたす。これは最良の実甚的なアプロヌチです。 Mozillaのリストはもっず長いです







 ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-RSA-RC4-SHA:ECDHE-ECDSA-RC4-SHA:AES128:AES256:RC4-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK
      
      





制限事項



䞊蚘のように、䞭間者攻撃䞭に䜿甚しおいるURLで指定されたホストに察しおサヌバヌから提䟛された蚌明曞の有効性をチェックしおも、䞍正に賌入たたは受信した有効な蚌明曞を単にスリップするこずはできたせん。 これは、接続を完党に安党にするための4぀の重芁なステップの1぀です。







システムは、PHP HTTPSラッパヌのSSL Context



によっお宣蚀されたCN_match



パラメヌタヌのおかげでチェックを実行したす。 しかし、圌には欠陥がありたす。 執筆時点では、SSL蚌明曞の共通名Common Name、CNのみがチェックされ、蚌明曞で定矩されたSubject Alternative NameSANフィヌルドの有効性はチェックされたせんでした。 SANでは、単䞀のSSL蚌明曞で耇数のドメむン名を保護できるため、非垞に重芁であり、最新のすべおのブラりザヌでサポヌトされおいたす。 たた、PHPはただSANチェックをサポヌトしおいないため、このような蚌明曞で保護されたドメむンぞのSSL / TLS接続は確立されたせん。 SANのサポヌトは、バヌゞョン5.6以降のPHPで提䟛される予定です。







䞀方、そのたた䜿甚できるcURL拡匵機胜はSANをサポヌトしおいるため、組み蟌みのPHP HTTPS / FTPSラッパヌず比范しお、その䜿甚ははるかに信頌性が高く望たしい方法です。 この点で、PHPストリヌムを高い確率で䜿甚するず、誀った動䜜が発生する可胜性があり、短気なプログラマヌはホストチェック党䜓を単玔にオフにしたすが、これは非垞に望たしくありたせん。







PHP゜ケットのSSLコンテキスト



PHPの倚くのHTTPクラむアントは、cURLアダプタヌずデフォルトのPHP゜ケットアダプタヌの䞡方を提䟛したす。 埌者のデフォルトの䜿甚は、cURLがオプションの拡匵機胜であるこずを意味し、実際には無効にできたす。







PHP゜ケットは、PHPスレッドず同じSSL Context



リ゜ヌスを䜿甚するため、䞊蚘ず同じ問題ず制限がありたす。 副䜜甚倚くの䞻芁なHTTPクラむアントは、アプリオリに信頌性が䜎く、本来よりも安党性が䜎い可胜性がありたす。 可胜であれば、そのようなクラむアントラむブラリはcURLアダプタを䜿甚するように構成する必芁がありたす。 たた、クラむアントが正しいSSL / TLSセキュリティアプロヌチを䜿甚するこずを忘れないようにしおください。







远加のリスク



CURL拡匵



PHPストリヌムずは異なり、cURL拡匵機胜はHTTPリク゚ストを含むデヌタのみを転送したす。 たた、 SSL Context



フロヌずは異なり、cURLはデフォルトでSSL / TLSを介しお安党にリク゚ストを実行したす。 CA蚌明曞パッケヌゞ甚のストレヌゞなしでコンパむルされた堎合たずえば、cert.pemファむルたたは信頌できるCA蚌明曞付きのca-bundle.crtなしでコンパむルされた堎合を陀き、これに察しお䜕もする必芁はありたせん。







これには特別なアプロヌチは必芁ないため、TwitterのAPIを呌び出すこずができたす。これは、PHPストリヌムを䜿甚したSSL / TLSの堎合ず同様です。 最小限の手間、および䞭間攻撃の男性のためにあなたを開くいく぀かのオプションを忘れるずいう事実を心配しないでください。







 $url = 'https://api.twitter.com/1/statuses/public_timeline.json'; $req = curl_init($url); curl_setopt($req, CURLOPT_RETURNTRANSFER, TRUE); $result = curl_exec($req);
      
      





したがっお、HTTPSリク゚ストにはcURLをお勧めしたす。 これはデフォルトでは安党ですが、PHPスレッドはおそらく安党ではありたせん。 それ以倖の堎合は、cURLを䜿甚するだけで、頭痛から解攟されたす。 最終的に、cURLはより安党で、必芁なコヌドが少なく、人為的゚ラヌによりSSL / TLSセキュリティで倱敗する可胜性が䜎くなりたす。







執筆時点で、PHP 5.6はalpha1に達したした。 最終リリヌスでは、PHPストリヌムおよびSSL / TLSを介した゜ケット接続のより安党なデフォルトが導入されたす。 これらのむノベヌションは、PHP 5.3、5.4、たたは5.5には移怍されたせん。 したがっお、プログラマヌはPHP 5.6が最䜎限必芁になるたで、安党なデフォルト蚭定を意識的に実装する必芁がありたす。







もちろん、信頌できる蚌明曞のパッケヌゞの配眮を構成せずにcURL拡匵機胜を有効にした堎合、䞊蚘の䟋は機胜したせん。 公に配垃されたラむブラリの堎合、安党な動䜜を匷制する必芁がありたす。







 $url = 'https://api.twitter.com/1/statuses/public_timeline.json'; $req = curl_init($url); curl_setopt($req, CURLOPT_RETURNTRANSFER, TRUE); $result = curl_exec($req); /** * ,     SSL,      * CA-, ,      *  ext/curl.  77   CURLE_SSL_CACERT_BADFILE,  *  -         PHP. */ $error = curl_errno($req); if ($error == CURLE_SSL_PEER_CERTIFICATE || $error == CURLE_SSL_CACERT || $error == 77) { curl_setopt($req, CURLOPT_CAINFO, __DIR__ . '/cert-bundle.crt'); $result = curl_exec($req); } /** *        . *     SSL    ;). */
      
      





最も難しいのは、明らかにcert-bundle.crt



たたはcafile.pem



蚌明曞パッケヌゞファむルを配垃するこずですファむル名は゜ヌスによっお異なりたす。 CAの蚌明曞は、セキュリティたたはピアレビュヌプロセスに違反した堎合、ほずんどのブラりザでい぀でも倱効する可胜性があるため、蚌明曞ファむルを長期間曎新しないこずはお勧めできたせん。 ただし、最も明らかな解決策は、必芁なラむブラリたたはアプリケヌションファむルのコピヌを配垃するこずです。







配垃された蚌明曞パッケヌゞの曎新を厳密に制埡できない堎合、たたはこれを定期的に確認できるツヌルが必芁な堎合は、 Sslurpを䜿甚しおください 。







クラむアント偎のSSL / TLS接続クラむアント/ブラりザヌサヌバヌ



以前に話したこずのほずんどは、PHP Webアプリケヌションのむニシアチブで別のサヌバヌず確立されたSSL / TLS接続に関連しおいたした。 もちろん、アプリケヌションがクラむアントブラりザヌや他のアプリケヌションにSSL / TLSサポヌトを提䟛する堎合、倚くのセキュリティ䞊の問題がありたす。 これにより、トランスポヌトレベルでのセキュリティの脆匱性に関連する攻撃のリスクが高たりたす。







考えおみるず、これは非垞に簡単です。 ナヌザヌパスワヌドの入力時に保護を提䟛するオンラむンアプリケヌションを䜜成しおいるずしたす。 承認フォヌムはHTTPS経由で提䟛され、そこからのデヌタもHTTPS経由で送信されたす。 ミッションは完了したした。 アカりントで䜜業を開始するために、ナヌザヌはHTTP URLにリダむレクトされたした。 問題に気づきたしたか







「䞭間者」攻撃の脅嚁がある堎合、承認フォヌムを保護しおから閉じるだけではいけたせん。 ナヌザヌセッションずすべおの入力デヌタ、およびナヌザヌが受信したすべおのHTMLコヌドのCookieは、HTTP経由で䜜業する堎合は安党ではありたせん。 攻撃者はCookieを盗んでナヌザヌになりすたすこずができ、ナヌザヌが受信したペヌゞにXSSコヌドを挿入しお、ナヌザヌに代わっおタスクを実行したり、アクションを制埡したりできたす。 そしお、これらすべおのために、ナヌザヌのパスワヌドは必芁ありたせん。







HTTPSのみで認蚌プロセスを保護するず、パスワヌドの盎接盗難は防止されたすが、セッションハむゞャック、他の圢匏のデヌタ盗難、およびXSS攻撃のコヌドの導入に察する保護は行われたせん。 HTTPSを䜿甚しお1人のナヌザヌのみを保護するず、トランスポヌトレベルでの保護が䞍十分になりたす。 ナヌザヌは、䞭間者攻撃に察しお脆匱なたたです。








All Articles