ホームページ  >  記事  >  バックエンド開発  >  PHPの豆知識の研究(1)

PHPの豆知識の研究(1)

WBOY
WBOYオリジナル
2016-06-23 13:41:521038ブラウズ

1. PHP ベースの Webshel​​l 攻撃

Wuyun で PHP ベースの Webshel​​l 攻撃を見ました。

通常の PHP コードを使用して実際のシェルのコンテンツを暗号化し、URL のみを残して画像に保存する高度に隠蔽された Web シェル。URL は暗号化されたままであるため、外部から検出される機能はありません。上記URLを開くと404が表示されますが、この404ページは404を装ったトロイの木馬ですが、タイトルが404 Not Foundに変更されています。

2. else ステートメントの使用量を減らす

if else については、構造的な整合性を追求する人もいます。これは良いことのように思えるかもしれませんが、場合によってはコードが煩雑になる可能性があります。論理的な混乱を招くため、1 つの結果を基準として使用し、他の状況が発生した場合に if 判断を行うことができます。つまり、以下の右の図に示すように、例外がある場合は B になります。 :

3. シングルページ アプリケーション

シングル ページとは、すべての操作とレイアウトが 1 ページで実行され、ページ ジャンプが必要なく、さまざまなユーザーのリクエストに応じてさまざまなコンテンツがロードされることを意味します。

利点: シンプルなページ構造、少ないデータ量、帯域幅の節約、高速応答、優れたエクスペリエンス、開発、保守、最適化が簡単

欠点: ajax テクノロジーの使用は SEO に役立ちません。

4. 検索エンジンに Ajax コンテンツをクロールさせます

主に前のケースの単一ページ構造の場合、プログラムは # 構造 URL を通じてページ コンテンツを制御しますが、検索エンジンによってクロールされません。

方法 1: Twitter は「シャープ記号 + 感嘆符」構造を使用していますが、エクスペリエンスは良くなく、面倒です。

方法 2: ページを更新せずに、ブラウザのアドレス バーに表示されるアドレスを変更します。手順は次のとおりです。

A. History API を使用してハッシュ記号構造を置き換え、各 # 記号が通常のパス URL になり、検索エンジンがすべての Web ページをクロールできるようにします。

B. Ajax 部分を処理し、URL に基づいてコンテンツをクロールする JavaScript 関数を定義します。

C. マウスのクリック イベントを定義し、History オブジェクトの Popstate イベントを使用してブラウザの「進む/戻る」ボタンを処理します。

D. サーバー側を設定します。

5. CURL_MULTI_INIT()

以前はcurl_init()を使用していましたが、最近curl_multi_init();を見たことがありますが、curl_multiの手順を見ると、かなり面倒だと感じました。およびcurl_multiは、CPUが高すぎる、Webページがハングするなどの原因となる可能性があります。curl_initとcurl_multi_initを比較すると、マルチスレッドは必ずしも複数のタスクを同時に処理できるわけではありません。時間コストは必ずしも低いわけではありません。以下に、curl_multi を使用する手順を示します。

ステップ 1:curl_multi_init を呼び出す

ステップ 2: ループ内でcurl_multi_add_handle を呼び出す

このステップでは、curl_multi_add_handle の 2 番目のパラメータが、curl_init のサブハンドルであることに注意してください。ステップ 3: 引き続きcurl_multi_exec を呼び出します

ステップ 4: 必要に応じてループ内でcurl_multi_getcontentを呼び出し、結果を取得します

ステップ 5: 単語ハンドルごとにcurl_closeを呼び出します。

6. PHP strstr() 関数

strstr(string, search) は、別の文字列内で最初に出現する文字列を検索します。文字列の残りの部分 (一致する点から) を返します。検索した文字列が見つからない場合は false を返します。

検索が必要です。検索する文字列を指定します。引数が数値の場合、ASCII 数値に一致する文字を検索します。

参照: http://www.w3cschool.cn/func_string_strstr.html。したがって、2 番目のパラメータを指定するときに、数値を一致させる必要がある場合は、引用符を追加することをお勧めします。

7. 標準化の重要性について

長い間修復されていなかった私の家の近くの道路は、歩行者用通路、自動車専用車線、自動車専用車線に分割することで解決されました。柔軟性が高いと選択肢が多すぎて問題が多くなることがあります。これはプログラムにも当てはまります。ユーザー入力の柔軟性は良いように見えますが、実際には、バグが発生しないように初期段階で標準化してはいかがでしょうか。ソース 絶望的な状況の後に埋め合わせをするのではなく?標準化により、すべてのプロセスがシンプルかつ効率的になります。

8. HHVM

HHVM (HipHop Virtual Machine) は、PHP コードを高レベルのバイトコード (多くの場合、中間言語と呼ばれます) に変換します。これらのバイトコードは、実行時にジャストインタイム (JIT) コンパイラーによって x64 マシンコードに変換されます。

Zend と比較して、HHVM は効率が向上し、CPU 負荷が軽減され、平均ページ読み込み時間も短縮されたことがさまざまなデータで示されています。 HHVM は PHP の実行パフォーマンスを最適化するために存在します。php5 と比較すると、いくつかの利点があります。php7 を待ちましょう。

9. PHP ソース コード署名コレクター

新しい馴染みのないソース コードを学習するときは、コード構造を直感的に理解することが重要です。これは、各ソース ファイルから句読点を 1 行ずつ取得することによって要約できます。つまり、ファイル署名です。これは、コードの複雑さを評価するのに役立ちます。実際には、コード ファイル内の固定シンボルを抽出してファイルの構造を提示します。

参考: http://c2.com/doc/SignatureSurvey/

10. 協調フィルタリング推奨アルゴリズム

1. コンテンツベースの推奨アルゴリズムの前提は、ユーザーがアイテム a を好きであれば、ユーザーは a に似たアイテムも好きであるはずです。基本的な考え方は、コンテンツの属性を分割し、同じ属性を持つコンテンツを抽出して推奨することです。

2. 協調フィルタリング推奨アルゴリズムの前提は、ユーザー a とユーザー b が両方とも一連の同じアイテムを好む場合、a はユーザー b が好む他のアイテムも好む可能性が非常に高いということです。基本的なプロセスは、ユーザーが最初に各項目を評価してスコアを付けることです。異なるユーザーの評価間の類似性を計算することで、最近傍が見つかり、最近傍の評価に基づいて推奨が生成されます。

上記のアルゴリズムはすべて、コサイン類似度やピアソン類似度などの式を使用した行列モデリングを使用します。ご使用の際は2つを1つに組み合わせてご使用いただくことをお勧めします。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。