ホームページ バックエンド開発 PHPチュートリアル Linux 管理者が知っておくべき推奨される PHP セキュリティ ポイントのトップ 10

Linux 管理者が知っておくべき推奨される PHP セキュリティ ポイントのトップ 10

Dec 28, 2016 pm 05:48 PM
php

PHP は、最も広く使用されているスクリプト プログラミング言語の 1 つです。市場シェアは、その支配的な地位を雄弁に物語っています。 PHP 7 がリリースされたという事実により、このプログラミング言語は現在の開発者にとってさらに魅力的なものになっています。いくつかの変更にもかかわらず、多くの開発者は PHP の将来について懐疑的です。理由の 1 つは PHP のセキュリティです。

Linux 管理者は、PHP のセキュリティに関するトップ 10 のポイントを知っておく必要があります
PHP は、最も広く使用されているスクリプト プログラミング言語の 1 つです。市場シェアは、その支配的な地位を雄弁に物語っています。 PHP 7 がリリースされたという事実により、このプログラミング言語は現在の開発者にとってさらに魅力的なものになっています。いくつかの変更にもかかわらず、多くの開発者は PHP の将来について懐疑的です。理由の 1 つは PHP のセキュリティです。

PHP のセキュリティは開発者にとっての主な懸念事項です。 PHP は内部から外部まで強固なセキュリティを提供しますが、これらのセキュリティ メカニズムを正しく実装できるかどうかは開発者の責任です。この記事では、Linux 管理者向けの PHP セキュリティ ポイントをいくつか紹介します。これらのポイントは、Web アプリケーションを保護し、長期的に適切に機能することを保証するのに役立ちます。

始める前に、私たちが扱っているシステムを理解する必要があります。デモンストレーションの目的で、Fedora を使用します。ただし、これらの点は、Ubuntu バージョンまたはその他の Linux ディストリビューションに適用される必要があります。詳細については、オペレーティング システムのディストリビューションのマニュアルを確認してください。

システム環境のいくつかの主要なファイルを詳しく見てみましょう。ファイルは次のものに似ているか、それに対応している必要があります:

デフォルト Web サーバー: Apache

DocumentRoot: /var/www/html

PHP 設定ファイル: /etc/php.ini

拡張設定ディレクトリ: /etc/php 。 d/

セキュリティ ファイル: /etc/php.d/security.ini

これらのヒントは、SQL インジェクション、XSS、クロスサイト リクエスト フォージェリ攻撃、eval()、およびファイルアップロード攻撃。一般的な攻撃のリストは、こちら (https://www.sitepoint.com/top-10-php-security-vulnerabilities/) でご覧いただけます。

1. 不要なモジュールを削除します。

PHPには組み込みのphpモジュールが付属しています。これらは多くのタスクに役立ちますが、すべてのプロジェクトで必要になるわけではありません。次のコマンドを入力するだけで、利用可能な PHP モジュールが表示されます:

# php - m

リストを表示したら、不要なモジュールを削除できます。モジュールの数を減らすと、作業する Web アプリケーションのパフォーマンスとセキュリティが向上します。

2. PHP 情報の漏洩を制限します。

プラットフォームが重要な情報を漏洩することはよくあります。たとえば、PHP はバージョンやサーバーにインストールされた事実などの情報を漏洩します。これは、expose_php コマンドを通じて実現できます。リークを防ぐには、/etc/php.d/security.ini でこのコマンドをオフに設定する必要があります。

expose_php=Off

バージョンとそのステータスを知る必要がある場合は、Web サイトのアドレスに対して簡単な Curl コマンドを実行するだけで情報を取得できます。

Curl - I http://www.kubiji.cn/index.php

前のコマンドは次の情報を返します:

HTTP/1.1 200 OK

X-Powered-By: PHP/7.0.10

Content-type: text/html; charset=UTF-8

3. リモートコード実行を無効にします。

リモート コード実行は、PHP セキュリティ システムにおける一般的なセキュリティ脆弱性の 1 つです。デフォルトでは、システム上でリモート コード実行が有効になっています。 「allow_url_fopen」コマンドを使用すると、require、include、URL 対応の fopen ラッパーなどの関数が PHP ファイルに直接アクセスできるようになります。リモート アクセスは HTTP または FTP プロトコルを使用して実現されるため、システムはコード インジェクションのセキュリティ脆弱性を防御できなくなります。

システムを安全かつ確実にリモート コード実行から遠ざけるために、次のようにこのコマンドを「オフ」に設定できます:

Allow_url_fopen=Off

allow_url_include=Off

4. PHP エラーをログに記録します。

Web アプリケーションのセキュリティを強化するもう 1 つの簡単な方法は、訪問者にエラーを表示しないことです。これにより、ハッカーが Web サイトのセキュリティをまったく侵害できなくなります。 /etc/php.d/security.ini ファイルを編集する必要があります。

display_errors=Off

この手順を完了した後、「開発者は、エラー メッセージの助けを借りずに、どのようにしてデバッグできるのでしょうか?」と考えているかもしれません。開発者は、デバッグに log_errors コマンドを使用できます。 security.ini ファイルで log_errors コマンドを「オン」に設定するだけです。

log_errors=オン

error_log=/var/log/httpd/php_scripts_error.log

5. リソースを合理的に制御します。

アプリケーションのセキュリティを確保するには、リソースを制御することが重要です。適切な実行とセキュリティを確保するには、PHP スクリプトの実行を制限する必要があります。さらに、リクエスト データの解析に費やす時間にも制限を設ける必要があります。実行時間が制御されている場合は、スクリプトによって使用されるメモリなどの他のリソースもそれに応じて構成する必要があります。これらすべてのメトリクスは、security.ini ファイルを編集することで管理できます。

# 秒単位で設定

max_execution_time = 25

max_input_time = 25

memory_limit = 30M

6. 危険な PHP 関数を無効にする

PHP には開発に役立つ関数が付属していますが、ハッカーが Web アプリケーションに侵入するために使用できる関数も多数あります。これらの機能を無効にすると、全体的なセキュリティが向上し、危険な PHP 機能にさらされることがなくなります。

これを行うには、まず php.ini ファイルを編集する必要があります。ファイル内に入ったら、disable_functions コマンドを見つけて、ファイル内の危険な機能を無効にします。これを行うには、次のコードをコピー/ペーストするだけです。

disable_functions =exec,passthru,

shell_exec,system,proc_open,popen,curl_exec,

curl_multi_exec,parse_ini_file,show_source

ここで見つけることができます (https://www.eukhost.com/blog/webhosting/dangerous) - php-functions-must-be-disabled/) 危険な PHP 関数の無効化について詳しくは、こちらをご覧ください。

7. ファイルをアップロードします。

アプリケーションでファイルのアップロードが必要ない場合は、ファイルのアップロード機能を無効にすることでセキュリティを向上させることができます。ユーザーによるファイルのアップロードを禁止したい場合は、/etc/php.d/ ディレクトリ内の security.ini ファイルを編集し、file_uploads コマンドを OFF に設定するだけです。

file_uploads=オフ

8. バージョンを最新の状態に保ちます。

開発者は、使用するテクノロジーにパッチを適用するために年中無休で働いています。 PHPについても同様です。オープンソース コミュニティがあるため、パッチや修正が定期的にリリースされます。更新されたバージョンでは、デイワン脆弱性やその他のセキュリティ脆弱性に対するセキュリティ パッチも提供されます。アプリケーションのセキュリティを重視する場合は、PHP ソリューションが最新であることを常に確認してください。さらに、他の関連テクノロジーに最新のパッチを適用することで、最大限のセキュリティを確保できます。

9. ファイルシステムへのアクセスを制御します。

デフォルトでは、PHP は fopen() などの関数を使用してファイルにアクセスできます。アクセスは open_basedir コマンドによって提供されます。まず、open_basedir コマンドを常に /var/www/html ディレクトリに設定します。他のディレクトリに設定すると、セキュリティ上の問題が発生する可能性があります。

open_basedir="/var/www/html/"

10. POST サイズを制御します。

最後の PHP セキュリティ ポイントは、POST サイズの制御関数です。 HTTP POST 機能は、クライアントのブラウザを使用してデータを Web サーバーに送信します。たとえば、ユーザーが証明書をアップロードすると、証明書は処理のために Web ブラウザに送信されます。すべてが順調に進んでいたのですが、ある日、ハッカーがサーバーのリソースを使い果たす巨大なファイルを送信しようとしました。これにより、サーバーがクラッシュしたり、応答が遅くなったりする可能性があります。この脆弱性からサーバーを保護するには、POST サイズを設定する必要があります。 POST サイズは /etc/php.d/security.ini ファイルで設定できます。

post_max_size=1k

結論

セキュリティは、Web 開発者と Linux 管理者にとって最も懸念される問題の 1 つです。上記の点に注意すれば、開発環境やPHP Webアプリケーションのセキュリティを強化することができます。重要な点が抜けていると思われる場合は、メッセージを残して追加してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles