PHPのセキュリティのベストプラクティストップ12

公開: 2021-08-14

セキュリティはすべてのソフトウェア開発者にとって重要なトピックですが、PHP開発者はいくつかの固有の課題に直面しています。 このブログ投稿では、PHPのセキュリティに関するベストプラクティスのトップ12と、それらをコードに実装してWebサイトを安全に保つ方法について説明します。 WebCitzの専門家をいつでも使用して、PHPプログラミングのニーズを処理できます。


1.PHPバージョンを定期的に更新します

セキュリティの脆弱性のリスクを最小限に抑えるために、PHPのバージョンが最新であることを確認してください。 パッチを適用すると既知のバグが修正されることが多いため、リリース時にそれらを利用することが重要です。

ハッカーはすでにPHPの最新の欠陥を悪用し始めています。 古いリリースを使用している場合は、設定を変更しない限り、侵入に対して脆弱になります。

プレビューリリースを試すことはできますが、セキュリティアドバイザーは、未知のセキュリティ上の欠陥がある可能性があるため、新しいソフトウェアのプレビューリリースを避けるように企業に警告しています。

PHPロゴ

2.暗号化されていない接続を介して機密データをインターネットに公開しないでください

多くのWebサイトは、開発者が保護されていないFTPプロトコル、SSL保護のない電子メールアカウントなどを使用して、パブリックインターネット上でデータベースまたはファイルシステムのクレデンシャルを公開するのを間違えたため、依然として脆弱です。

これらのファイルとフォルダは、TLS / SSLで暗号化されていないネットワーク接続を介して送信する前に、暗号化して保護してください。

セキュリティロックグラフィック

3.SQLインジェクション攻撃から保護する

SQL(Structured Query Language)インジェクションの脆弱性は、ユーザー入力がそのタイプと意図の適切な検証なしにクエリ内で使用される場合に発生します。これにより、送信された文字列からつなぎ合わされたクエリをたどることによって示される結果の信頼性が損なわれます。

複雑に聞こえますが、知っておく必要があるのは、この攻撃によってビジネスデータや機密情報が漏洩する可能性があるということだけです。

SQLインジェクション攻撃から保護する最善の方法は、入力を保護することです。ハッカーがフォームフィールドまたはブレイクアウトボックスを介して独自のコードをWebサイトに挿入するのを防ぎます。 次のように、SQLクエリに挿入する前に、ユーザーが送信した値をサニタイズする必要があります。$ input = filter_var($ _ POST ['field']、FILTER_SANITIZE_STRING); if(!empty($ input)){echo“入力しました:“。$ input。”

「; } else {echo '何かを入力してください';}。 空のフィールドがないことを確認するために、empty()をどのように使用したかに注目してください。

セキュリティは、中央が赤でロックが解除されているものを除いて、すべて青で一列にロックされています

4.機密データを安全に保管していることを確認します

パスワードとクレジットカード情報を安全に保つことに関しては、エラーの余地はありません。ハッカーがこの情報を含むこれらのファイルまたはデータベースにアクセスした場合、危険は高すぎます。

このような攻撃が発生するリスクを最小限に抑えるために、機密データをデータベースに保存するときは、常に強力な暗号化アルゴリズムを使用してください。できれば、SHA512_RSAなどの128ビットAES暗号化を使用するアルゴリズムを使用してください。

暗号化されたデータベースの管理を容易にするソフトウェア、MySQL Encryption Utilities(MEU)も利用できます。 MEUはMySQLデータベースのテキストフィールドのみを暗号化することに注意することが重要ですが、ほとんどのユースケースではこれで十分です。

サーバーラックで作業している人

5.パスワードを再利用しないでください

同じパスワードを何度も再利用することは、アカウントをハッキングする確実な方法です。 PHPの組み込み関数を使用してテキストのランダムな文字列(rand()など)を生成している場合、それらは短命であることに注意してください。少なくとも数か月ごとに変更してください。

大文字、小文字、数字、記号を含める必要があります。 また、週に1回、または間違ったパスワードで3回ログインを試みた後など、新しい文字列をいつ生成するかについて、より複雑なルールを設定しても問題はありません。 あなたのために数学を行うことができる利用可能なソフトウェアさえあります!

ユーザー名とパスワードのログインフィールド

6.アプリケーションがXSS攻撃に対して脆弱でないことを確認します

XSS(クロスサイトスクリプティング)は、悪意のあるコードがWebサイトに挿入され、訪問者のブラウザで実行される攻撃です。 これにより、Cookieの盗難やセッションハイジャックが発生する可能性があり、ハッカーはパスワードやクレジットカード番号などの独自の資格情報を入力しなくても、すべての機密データにアクセスできます。

この脆弱性は、WebページでJavaScriptフォーム検証を使用することで悪用される可能性があります。これにより、訪問者が入力した入力は、ページの更新、画像などのアクティブコンテンツを含むハイパーリンクの表示、およびユーザー指定のパラメーターの動的URLへの追加によって自動的に実行されます。 account = 123 'など。

机に座っているハッカー

7.CSRF攻撃から保護する

CSRF(Cross-Site Request Forgery)は、不正なコマンドが攻撃者のサイトからWebアプリケーションに送信される攻撃の一種です。 これは、とりわけ、セッションハイジャックやCookieの盗難につながる可能性があります。

一見難しいように思われるかもしれませんが、他のユーザーのアカウントにログインするなど、機密情報が公開される可能性のあるアクションの検証を必要とする追加のトークンを提供するだけです。これにより、1つだけではないことが保証されます。脆弱性の単一のポイントであり、自動化されたアカウントがWebサイトで使用されていないことを確認してください。

人をハッキングする

8.通常のパッチを忘れないでください!

言うまでもないことですが、システムプロバイダーやソフトウェアベンダーから新しい脆弱性がリリースされた場合は、パッチを適用する必要があります。

他の誰かが見つけたセキュリティホールを知ることはできませんが、気づいていません。Webサイトをハッキングするよりも、常に情報を入手することをお勧めします。

背後にあるセキュリティという言葉でハッキングする人

9.本番環境でデバッグモードを有効のままにしないでください

多くの場合、デバッグコードには、リモートファイル編集(fopen()を使用)やmysql_query()を介した生のSQLクエリの生成などを有効にする機能があります。

これらは、エラーが発生したときに完全なスタックトレースを生成する場合に最適ですが、本番Webサイトに大きなセキュリティリスクが発生します。 これらの機能を無効にし、それらが使用されているインスタンスを削除すると、バグのパッチ適用に関しても多くの時間を節約できます。

コンピューターの画面上のバグの上に拡大鏡のグラフィック

10.ファイアウォールで開いているポートを確認します

Windowsが更新プログラムのインストールを完了するたびに、「次へ」をクリックしたくなるかもしれませんが、実行中のサービスと、すべてが正しく構成されているかどうかを確認することを忘れないでください。必要に応じてファイアウォールも更新します。

ハッカーが攻撃を簡単に実行できるシステムへのエントリポイントを見つけられない場合は、不要な訪問者を締め出すのに役立ちます。

コードが書かれたコンピューターの画面を見ている人

11.アカウント名として「admin」を使用しないでください

パスワードを推測して他の誰かがあなたのサイトにアクセスするのを防ぎたい場合は、「admin」などのあまり明白ではない別のユーザー名を使用してみてください。

誰かがあなたのアカウントにアクセスしようとすると、パスワードを推測するのがはるかに難しくなります。また、一般的でないユーザー名を使用している場合、ハッカーがブルートフォース方式を悪用することも難しくなります。

キーとして指紋を使用したキーボードのキー

12.新しい脆弱性を常に最新の状態に保つ

最初は気が遠くなるように思えるかもしれませんが、他の人が見つけたセキュリティホールについて常に情報を入手しておくと、リークが発生した場合にシステムを安全に保つのに役立ちます。

ただし、これらすべての更新を追跡するのは難しい場合があります。幸いなことに、このタスクをこれまでになく簡単にする多くのツールが利用可能になっています。 そのようなツールの1つは、「Debian Long Term Support」と呼ばれ、複数のバージョンのOSと、PHPを使用するWebサーバーを含むすべての種類のソフトウェアをサポートするように設計されています。

コンピューターを使用しながらカメラに微笑んでいる人

結論

結論として、これらは、Webサイトを安全に保つためにWebサイトに適用できる最良のセキュリティプラクティスのほんの一部です。 必ずしも簡単なことではありませんが、時間をかけて努力すれば、ハッキングされる可能性が低いオンラインプレゼンスで報われるでしょう!