PHP 7の一般的なセキュリティの脆弱性とそれらを回避する方法は何ですか?
PHP 7および緩和戦略の一般的なセキュリティの脆弱性:
PHP 7は、その前任者よりも改善されていますが、いくつかの一般的なセキュリティの脆弱性を示しています。 これらの脆弱性は、言語自体に固有の欠陥ではなく、不安定なコーディングプラクティスに起因することがよくあります。 ここに最も一般的なものがいくつかあります:
-
sqlインジェクション:これは、信頼されていないユーザー入力が適切な消毒なしにSQLクエリに直接組み込まれたときに発生します。 攻撃者は、この入力を操作して任意のSQLコマンドを実行したり、機密データへのアクセスを獲得したり、データベースサーバーを制御したりする可能性があります。 緩和:パラメータ化されたクエリまたは準備されたステートメントを常に使用してください。 ユーザー入力をSQLクエリに直接連結しないでください。 パラメーター化を自動的に自動的に処理することが多い堅牢なORM(オブジェクトリレーショナルマッパー)を使用します。 これらのスクリプトは、Cookieを盗んだり、ユーザーをフィッシングサイトにリダイレクトしたり、Webサイトを汚したりすることができます。
緩和:- Webページに表示する前に、すべてのユーザーが提供するデータを厳密に消毒します。 コンテキストに適した出力エンコーディング関数(HTML、JavaScriptなど)を使用します。 コンテンツセキュリティポリシー(CSP)を実装して、ブラウザがロードできるリソースを制御します。 たとえば、攻撃者は、ユーザーの知識なしにファンドを転送するためにフォームを提出するリンクを作成する場合があります。 緩和:CSRFトークンを使用します。 これらは、フォームの提出ごとに生成される一意の予測不可能な値です。 サーバーは、トークンの送信されたものが生成されたものと一致することを確認し、不正な要求を防ぎます。 CSRFのリスクをさらに軽減するためにCookie属性を使用してください。 これは、セッション管理システムの脆弱性を活用したり、送信中のセッションIDの傍受など、さまざまな方法で達成できます。 緩和:
安全で予測不可能なセッションIDを使用します。 HTTPSを実装して、クライアントとサーバー間の通信を暗号化します。 定期的にセッションIDを再生します。 セッションデータを安全に保存します。理想的には、ファイルに依存するのではなく、データベースに理想的です。- ファイルインクルージョンの脆弱性:これらの脆弱性により、攻撃者はサーバー上に任意のファイルを含めることができ、悪意のあるコードを実行する可能性があります。 これは、アプリケーションに適切な検証なしでユーザー入力に基づいてファイルを動的に含める場合に発生することがよくあります。
same-site
緩和: ユーザー入力に基づいてファイルを動的に避けてください。 ホワイトリストアプローチを使用して、どのファイルを含めることができるかを正確に指定します。 厳密なファイルパス検証を実装します-
リモートコード実行(RCE): rce脆弱性により、攻撃者はサーバー上で任意のコードを実行できます。 これは、多くの場合、SQLインジェクションやファイル包含など、他の脆弱性の結果です。 緩和:RCEにつながる可能性のある根本的な脆弱性に対処します。 定期的にPHPおよびすべての従属ライブラリを更新して、既知のセキュリティ欠陥をパッチします。 アプリケーションのさまざまな部分に必要な権限のみを付与する最小限の特権原則を実装します。脆弱性。 これらには次のものが含まれます。 非劣化していないユーザー入力を使用することは非常に危険であり、任意のコード実行につながる可能性があるため、すべてのコストで避ける必要があります。 可能な限り、より安全な代替品を使用してください。
、
、、:
:
:これらの関数は、ファイルパスの適切な検証なしに使用された場合にファイル包含脆弱性につながる可能性があります。 常にホワイトリストのアプローチを使用し、パスを厳密に検証します。 非劣化したユーザー入力でそれを使用すると、可変上書きや潜在的なコードインジェクションなど、さまざまな脆弱性につながる可能性があります。 データを直接使用し、データを適切に消毒することを好みます。
以上がPHP 7の一般的なセキュリティの脆弱性とそれらを回避する方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。