最近リアライズは、PHPベースのWebセキュリティテストプラットフォームを開発して、この機能を認識するためにCMSを書いた、彼は記事の要約を書きました。
まず、CMSの一種の必要性は、いくつかの方法識別されます。
1.ページのソースの特性:例えば、ソースコードは、CMSまたは特定のキーワードの名前が含まれています。
2.パス/ファイル特性:プレゼンス/デデ/ファイルパスadvancedsearch.php例えばデデDedeCmsシステム。
3.著作権情報機能:CMSは、多くの場合、私たちの次のプログラムに情報などの機能が含まれているページの下部に著作権情報は、の「ページのソースコード機能」に含めることができます。
4.robots.txtの特徴:robots.txtファイルは、清華フォーラムシステムとして、CMS CMS情報の一部に含まれます。
これらの4つの特徴に加えて、他の機能がここにある多くの詳細はありませんが、我々はこれらの4つの特性のまわりCMS基づいて必要な認識PHPを達成しようとしています。
あなたがプログラミングを開始する前に、CMSの識別については、独自のプログラミングのアイデアを設計するための機能の4種類に応じてみましょう:
あなたがプログラミングを開始する前に、CMSの識別については、独自のプログラミングのアイデアを設計するための機能の4種類に応じてみましょう:
1.ページのソースであって、送信要求のページのソースコード - > Nと一致しています
2.パス/ファイル前記HTTPステータスコードを送信リクエスト - >コードは、HTTP状態に応じてパス/ファイルが存在するか否かを判断します
3.著作権前記Webページの送信要求コードを取得 - >と一致するn個(ここで、同じページのソースコードのプログラミングのアイデア)
4.robots.txt前記HTTPステータスコードを送信リクエスト - 存在は、通常の使用一致している場合> - > HTTPステータスコードは、robots.txtファイルか否かを判断します
上記のプログラムは、アイデアの実現の4種類が、同時に、認識の精度を確保するために、我々は省略またはfalseを防ぐためのさまざまな方法を識別するためにCMSを追加する必要がありますです。
例えば、それは決定さデデのdedecmsシステムは、我々が「許可しない:/プラス/」添加ベースのrobots.txtファイル中に存在することができるでもあるかどうかであり得るキーワード決意外側「dedeajax」キーワードであれば、任意の上記のように、ソースコード内で検出され条件はdedeCmsシステムデデを決定することができます。
私たちの主な機能を書き始めましょう:
// 获取HTTP状态码函数: 関数 requests_code($のURL ){ $カール = curl_init(); $ヘッダ = 配列( "接続:キープアライブ"は、 "同意する:text / htmlの、アプリケーション/ XHTML + xmlの、* / *"、 "プラグマ:キャッシュなし"、「受け入れ言語:ZH-ハンス-CN、 ZH-ハンス・; Q = 0.8、EN-US; Q = 0.5、EN; Q = 0.3" 、 "ユーザーエージェント:Mozillaの/ 5.0(互換; MSIE 10.0; Windows NTの6.2; WOW64;トライデント/ 6.0)" ); ますcurl_setopt($カール、CURLOPT_URL、$ URL ); ますcurl_setopt($カール、CURLOPT_HEADER、1 ); ますcurl_setopt($カール、CURLOPT_HTTPHEADER、$ヘッダ)。 ますcurl_setopt($カール、CURLOPT_NOBODY、真の); ますcurl_setopt($カール、CURLOPT_SSL_VERIFYPEER、偽); ますcurl_setopt($カール、CURLOPT_SSL_VERIFYHOST、偽); ますcurl_setopt($カール、CURLOPT_RETURNTRANSFER、1 ); curl_exec($カール)。 $コード = curl_getinfo($カール、CURLINFO_HTTP_CODE)。 curl_close($カール)。 リターン $コード。 } // ページのソース定期的なマッチング関数を取得: 関数 contents_match($ URL、$ REGEX ){ $カール = curl_init(); $ヘッダー = 配列( "接続:キープアライブ"、「同意する:テキスト/ HTML、ファイルアプリケーション/ XHTML + xmlの、* / * " "プラグマ:キャッシュなし"、"言語を受け入れ:ZH-ハンス-CN、ZH-ハンス・; Q = 0.8、EN-US; Q = 0.5、EN; Q = 0.3」、 "ユーザーエージェント:Mozillaの/ 5.0(互換; MSIE 10.0; Windows NTの6.2; WOW64;トライデント/ 6.0)" ); ますcurl_setopt($カール、CURLOPT_URL、$ URL ); ますcurl_setopt($カール、CURLOPT_RETURNTRANSFER、1 ); ますcurl_setopt($カール、CURLOPT_HTTPHEADER、$ヘッダ)。 ますcurl_setopt($カール、CURLOPT_SSL_VERIFYPEER、偽); ますcurl_setopt($カール、CURLOPT_SSL_VERIFYHOST、偽); $データ = curl_exec($カール)。 curl_close($カール)。 もし(するpreg_match($正規表現、$データ)){ 返す 真。 } 他{ 戻り 偽。 } }
私たちは、コードより理解導入を作るために達成するためにカスタム関数を使用する2つの機能は、我々はさまざまな戦略を識別するために、CMSを書き始めます。
// 清華サイトのフォーラムシステムが特徴と 機能 DZ($ URL ){ $ REGEX = "/清華/ I" ; IF(contents_match($ URL、$ REGEX)){ // ページのソースに特徴付け リターン 真を。 } ELSEIF(contents_match($ URL '/ robots.txtの'。$ REGEX)){ // のrobots.txtファイル機能の リターン はTrue 。 } 他{ 戻り 偽。 } } // ECshopショップモールサイト前記システムの 機能 ECShop($ URL ){ $ contents_regex = "/ process一/" ; $パス = "/themes/default/images/logo.gif" ; IF(contents_match($ URL、$ contents_regex)){ // ページのソースは、特徴 返す 真。 } 他の IF(requests_code($ URL。$パス)200が==である){ // robots.txtファイル機能の リターン はTrue 。 } 他{ 戻り 偽。 } }
ここでは、著者の交換に連絡することができ、より認識が興味を持っている場合は、CMS、CMSの認識を示すためには二つの方法があります。だから我々は認識PHP CMSのコアプログラムを実現すること、そしてあなただけが声明かどうかを判断するために、各関数を呼び出して、プラス百万フロントエンドエンジニア、何を最終的な結果を表示するテキストの終わりを美化する必要があります。