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()、ファイル アップロード攻撃など、さまざまな種類の一般的な攻撃から Web サイトを保護します。一般的な攻撃のリストは、こちら (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 でこのコマンドをオフに設定する必要があります。
りーバージョンとそのステータスを知る必要がある場合は、Web サイトのアドレスに対して単純な Curl コマンドを実行するだけで、その情報を取得できます。
りー前のコマンドは次の情報を返します:
expose_php=Off
3. リモートコード実行を無効にします。
リモート コード実行は、PHP セキュリティ システムにおける一般的なセキュリティ脆弱性の 1 つです。デフォルトでは、システム上でリモート コード実行が有効になっています。 「allow_url_fopen」コマンドを使用すると、require、include、URL 対応の fopen ラッパーなどの関数が PHP ファイルに直接アクセスできるようになります。リモート アクセスは HTTP または FTP プロトコルを使用して実現されるため、システムはコード インジェクションのセキュリティ脆弱性を防御できなくなります。
システムが安全で確実にリモート コード実行から離れていることを保証するために、以下に示すようにこのコマンドを「オフ」に設定できます:
Curl - I http://www.livecoding.tv/index.php
4. PHP エラーをログに記録します。
Web アプリケーションのセキュリティを強化するもう 1 つの簡単な方法は、訪問者にエラーを表示しないことです。これにより、ハッカーが Web サイトのセキュリティをまったく侵害できなくなります。 /etc/php.d/security.ini ファイルを編集する必要があります。
りーこの手順を完了した後、「開発者はエラー メッセージの助けを借りずにどうやってデバッグできるのでしょうか?」と考えているかもしれません。開発者はデバッグに log_errors コマンドを使用できます。 security.ini ファイルで log_errors コマンドを「オン」に設定するだけです。
りー5. リソースを合理的に制御します。
アプリケーションのセキュリティを確保するには、リソースを制御することが重要です。適切な実行とセキュリティを確保するには、PHP スクリプトの実行を制限する必要があります。さらに、リクエスト データの解析に費やす時間にも制限を設ける必要があります。実行時間が制御されている場合は、スクリプトによって使用されるメモリなどの他のリソースもそれに応じて構成する必要があります。これらすべてのメトリクスは、security.ini ファイルを編集することで管理できます。
りー6. 危険な PHP 機能を無効にする
PHP には開発に便利な機能が備わっていますが、ハッカーが Web アプリケーションに侵入するために使用できる機能も多数あります。これらの機能を無効にすると、全体的なセキュリティが向上し、危険な PHP 機能にさらされることがなくなります。
これを行うには、まず php.ini ファイルを編集する必要があります。ファイル内に入ったら、disable_functions コマンドを見つけて、ファイル内の危険な機能を無効にします。これを行うには、次のコードをコピー/ペーストするだけです。
りー危険な PHP 機能の無効化について詳しくは、こちら (http://www.php.cn/) をご覧ください。
7. ファイルをアップロードします。
如果你的应用程序不需要上传任何文件,禁用上传文件的功能有助于提高安全。想禁止用户上传文件,只需要编辑/etc/php.d/目录下的security.ini文件,将file_uploads命令设成OFF。
file_uploads=Off
8. 保持版本最新。
开发人员在24/7不间断地工作,给你使用的技术打上补丁。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管理员最关注的问题之一。如果采取了上述要点,你势必可以加强开发环境和PHP Web应用程序方面的安全。要是你认为我们遗漏了重要的内容,欢迎留言补充。
以上就是详细介绍Linux管理员不可不知十大PHP安全要点的详情的内容,更多相关内容请关注PHP中文网(www.php.cn)!