検索
ホームページバックエンド開発PHPの問題PHPのセキュリティ設定は何ですか?

PHPのセキュリティ設定は何ですか?

Jul 29, 2020 am 09:49 AM
phpセキュリティ設定

PHP セキュリティ設定には、1. PHP エラー出力のシールド、2. PHP バージョンのシールド、3. グローバル変数のクローズ、4. ファイル システムの制限、5. リモート リソース アクセスの禁止、6. 拡張機能のインストールなどがあります。 。

PHPのセキュリティ設定は何ですか?

推奨事項: 「PHP チュートリアル

最近、PHP のセキュリティ関連の問題について同僚と話し、記録しました。いくつかの洞察。

スクリプト言語と初期バージョンの設計に起因するさまざまな理由により、PHP プロジェクトには多くのセキュリティ リスクが存在します。構成オプションから、次の最適化を行うことができます。

#1. PHP エラー出力をシールドします。
/etc/php.ini (デフォルトの設定ファイルの場所) で、次の設定値を Off に変更します

display_errors=Off

エラー スタック情報を直接ファイルに出力しないでください。 Web ページ 、ハッカーが関連情報を使用するのを防ぐため。

正しいアプローチは次のとおりです。
トラブルシューティングを容易にするために、エラー ログをログ ファイルに書き込みます。

#2. PHP バージョンをブロックします。
デフォルトでは、
Response Headers X-powered-by: PHP/7.2 のように、PHP バージョンが戻りヘッダーに表示されます。 0

php.ini の次の設定値を Off

expose_php=Off

3 に変更し、グローバル変数を閉じます。
グローバル変数が有効になっている場合、一部のフォーム送信データはグローバル変数として自動的に登録されます。コードは次のとおりです。


グローバル変数が有効になっている場合、サーバー側の PHP スクリプトは $username と $password を使用してユーザー名とパスワードを取得できます。これにより、スクリプト インジェクションの大きな危険が生じます。

これを有効にする方法は、php.ini を次のように変更することです:

register_globals=On

それを閉じることをお勧めします。パラメータは次のとおりです:

register_globals=Off

When閉じられており、 $_POST と $_GET からのみアクセスでき、 $_REQUEST で関連パラメータを取得します。

4. ファイル システムの制限
open_basedir を使用して、PHP がアクセスできるシステム ディレクトリを制限できます。

以下のスクリプトコード(hack.php)を制限なく使用すると、システムパスワードを取得できます。

<?php
echo file_get_contents(&#39;/etc/passwd&#39;);

設定すると、エラーが報告され、関連情報が表示されなくなり、システム ディレクトリ b が不正にアクセスされなくなります:

PHP 警告: file_get_contents(): open_basedir 制限が有効です。ファイル (/etc/passwd) が許可されたパス内にありません: (/var/www) (/var/www/hack.php の 3 行目)

警告: file_get_contents(): open_basedir 制限が有効です。ファイル (/etc/passwd) が許可されたパス内にありません: /var/ 内の (/var/www) www/hack.php 行 3 PHP 警告: file_get_contents(/etc/passwd): ストリームを開けませんでした: 操作は /var/www/hack.php 行 3

## では許可されていません

#警告: file_get_contents(/etc/passwd): ストリームを開けませんでした: /var/www/hack.php の 3 行目で操作は許可されていません

open_basedir=/var/www

5. リモートリソースへのアクセスを禁止します。

allow_url_fopen=Off

allow_url_include=Off

その他のサードパーティ製セキュリティ拡張機能


6.Suhosin。 Suhosin は、PHP プログラムの保護システムです。これはもともと、PHP プログラムと PHP コアの既知または未知の欠陥からサーバーとユーザーを保護するために設計されました (非常に実用的で、いくつかの軽微な攻撃に耐えることができます)。スホシンには 2 つの独立したパーツがあり、別々に使用することも、組み合わせて使用​​することもできます。

最初の部分は、バッファ オーバーフローやフォーマット文字列の弱点に対処できる PHP コア用のパッチです (これは必須です!);

2 番目の部分は、強力な PHP 拡張機能 (拡張機能) です。モードは非常に優れており、インストールが簡単です...)、他のすべての保護手段を含みます。

拡張機能のインストール

wget http://download.suhosin.org/suhosin-0.9.37.1.tar.gztar zxvf suhosin-0.9.37.1.tar.gz
cd suhosin-0.9.37.1/phpize./configure  --with-php-config=/usr/local/bin/php-config
make
make install
在php.ini下加入suhosin.so即可

extension=suhosin.so

機能

##エミュレータ保護モード
  1. 2 つの関数を追加 sha256( ) と sha256_file() を PHP コアに追加します。
  2. すべてのプラットフォームで、関数 crypt() に CRYPT_BLOWFISH を追加します。
  3. phpinfo() ページの透過的保護を有効にします。
  4. SQL データベースユーザー保護 (テスト段階)

ランタイム保護

  1.  加密cookies
  2. 防止不同种类的包含漏洞(不允许远程URL包含(黑/白名单);不允许包含已上传的文件;防止目录穿越攻击)
  3. 允许禁止preg_replace() 
  4. 允许禁止eval()函数
  5. 通过配置一个最大执行深度,来防止无穷递归
  6. 支持每个vhost配置黑白名单
  7. 为代码执行提供分离的函数黑白名单
  8. 防止HTTP响应拆分漏洞
  9. 防止脚本控制memory_limit选项
  10. 保护PHP的superglobals,如函数extract(),import_request_vars()
  11. 防止mail()函数的新行攻击
  12. 防止preg_replace()的攻击

Session 保护

  1. 加密session数据
  2. 防止session被劫持
  3. 防止超长的session id
  4. 防止恶意的session id

SESSION里的数据通常在服务器上的明文存放的。这里通过在服务端来加解密$_SESSION。这样将Session的句柄存放在Memcache或数据库时,就不会被轻易攻破,很多时候我们的session数据会存放一些敏感字段。

这个特性在缺省情况下是启用的,也可以通过php.ini来修改:

suhosin.session.encrypt = On
suhosin.session.cryptkey = zuHywawAthLavJohyRilvyecyondOdjo
suhosin.session.cryptua = On
suhosin.session.cryptdocroot = On

;; IPv4 only
suhosin.session.cryptraddr = 0suhosin.session.checkraddr = 0

Cookie加密

Cookie在客户端浏览器的传输的HTTP头也是明文的。通过加密cookie,您可以保护您的应用程序对众多的攻击,如

  • Cookie篡改:攻击者可能会尝试猜测其他合理的cookie值来攻击程序。
  • 跨应用程序使用Cookie:不正确配置的应用程序可能具有相同的会话存储,如所有会话默认存储在/tmp目录下,一个应用程序的cookie可能永远不会被重新用于另一应用,只要加密密钥不同。

Cookie加密在php.ini中的配置:

suhosin.cookie.encrypt = On

;; the cryptkey should be generated, e.g. with 'apg -m 32'suhosin.cookie.cryptkey = oykBicmyitApmireipsacsumhylWaps1
suhosin.cookie.cryptua = On
suhosin.cookie.cryptdocroot = On

;; whitelist/blacklist (use only one)
;suhosin.cookie.cryptlist = WALLET,IDEAS
suhosin.cookie.plainlist = LANGUAGE

;; IPv4 only
suhosin.cookie.cryptraddr = 0suhosin.cookie.checkraddr = 0Blocking Functions
测试##默认PHP的Session保存在tmp路径下ll  -rt /tmp | grep sess##扩展未开启时查看某条sesson的数据cat  sess_ururh83qvkkhv0n51lg17r4aj6//记录是明文的##扩展开启后查看某条sesson 的数据cat  sess_ukkiiiheedupem8k4hheo0b0v4//记录是密文的可见加密对安全的重要性

阻断功能

白名单

##显式指定指定白名单列表
suhosin.executor.func.whitelist = htmlentities,htmlspecialchars,base64_encode
suhosin.executor.eval.whitelist = htmlentities,htmlspecialchars,base64_encode

<?php
echo htmlentities(&#39;<test>&#39;);
eval(&#39;echo htmlentities("<test>");&#39;);

黑名单

##显式指定指定黑名单列表
suhosin.executor.func.blacklist = assert,unserialize,exec,popen,proc_open,passthru,shell_exec,system,hail,parse_str,mt_srand
suhosin.executor.eval.whitelist = assert,unserialize,exec,popen,proc_open,passthru,shell_exec,system,hail,parse_str,mt_srand
通过日志来查看非法调用黑白名单

suhosin.simulation = 1
suhosin.log.file = 511
suhosin.log.file.name = /tmp/suhosin-alert.log

其他配置项

suhosin.executor.include.max_traversal    扩目录的最大深度,可以屏蔽切换到非法路径
suhosin.executor.include.whitelist        允许包含的URL,用逗号分隔
suhosin.executor.include.blacklist        禁止包含的URL,用逗号分隔
suhosin.executor.disable_eval = On        禁用eval函数

suhosin.upload.max_uploads
suhosin.upload.disallow_elf
suhosin.upload.disallow_binary
suhosin.upload.remove_binary
suhosin.upload.verification_script        上传文件检查脚本,可以来检测上传的内容是否包含webshell特征

使用Suhosin,你可以得到一些错误日志,你能把这些日志放到系统日志中,也可以同时写到其他任意的日志文件中去;

它还可以为每一个虚拟主机创建黑名单和白名单;

可以过滤GET和POST请求、文件上载和cookie;

你还能传送加密的会话和cookie,可以设置不能传送的存储上线等等;

它不像原始的PHP强化补丁,Suhosin是可以被像Zend Optimizer这样的第三方扩展软件所兼容的。

以上がPHPのセキュリティ設定は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
酸とベースデータベース:違いとそれぞれを使用するタイミング。酸とベースデータベース:違いとそれぞれを使用するタイミング。Mar 26, 2025 pm 04:19 PM

この記事では、酸とベースのデータベースモデルを比較し、その特性と適切なユースケースを詳述しています。酸は、財務およびeコマースアプリケーションに適したデータの整合性と一貫性を優先し、ベースは可用性に焦点を当て、

PHPセキュアファイルアップロード:ファイル関連の脆弱性の防止。PHPセキュアファイルアップロード:ファイル関連の脆弱性の防止。Mar 26, 2025 pm 04:18 PM

この記事では、コードインジェクションのような脆弱性を防ぐために、PHPファイルのアップロードを確保することについて説明します。ファイルタイプの検証、セキュアストレージ、およびアプリケーションセキュリティを強化するエラー処理に焦点を当てています。

PHP入力検証:ベストプラクティス。PHP入力検証:ベストプラクティス。Mar 26, 2025 pm 04:17 PM

記事では、組み込み関数、ホワイトリストアプローチ、サーバー側の検証などの手法に焦点を当てたセキュリティを強化するためのPHP入力検証のベストプラクティスについて説明します。

PHP APIレート制限:実装戦略。PHP APIレート制限:実装戦略。Mar 26, 2025 pm 04:16 PM

この記事では、Token BucketやLeaky BucketなどのアルゴリズムやSymfony/Rate-Limiterなどのライブラリを使用するなど、PHPでAPIレート制限を実装するための戦略について説明します。また、監視、動的に調整されたレートの制限、および手をカバーします

PHPパスワードハッシュ:password_hashおよびpassword_verify。PHPパスワードハッシュ:password_hashおよびpassword_verify。Mar 26, 2025 pm 04:15 PM

この記事では、パスワードを保護するためにPHPでpassword_hashとpassword_verifyを使用することの利点について説明します。主な議論は、これらの関数が自動塩の生成、強力なハッシュアルゴリズム、およびSecurを通じてパスワード保護を強化するということです

OWASPトップ10 PHP:共通の脆弱性を説明し、軽減します。OWASPトップ10 PHP:共通の脆弱性を説明し、軽減します。Mar 26, 2025 pm 04:13 PM

この記事では、PHPおよび緩和戦略におけるOWASPトップ10の脆弱性について説明します。重要な問題には、PHPアプリケーションを監視および保護するための推奨ツールを備えたインジェクション、認証の壊れ、XSSが含まれます。

PHP XSS予防:XSSから保護する方法。PHP XSS予防:XSSから保護する方法。Mar 26, 2025 pm 04:12 PM

この記事では、PHPでのXSS攻撃を防ぐための戦略について説明し、入力の消毒、出力エンコード、セキュリティを向上させるライブラリとフレームワークの使用に焦点を当てています。

PHPインターフェイスvs抽象クラス:それぞれを使用する時期。PHPインターフェイスvs抽象クラス:それぞれを使用する時期。Mar 26, 2025 pm 04:11 PM

この記事では、PHPでのインターフェイスと抽象クラスの使用について説明し、それぞれをいつ使用するかに焦点を当てています。インターフェイスは、無関係なクラスや複数の継承に適した、実装なしで契約を定義します。抽象クラスは共通の機能を提供します

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 Mac版

SublimeText3 Mac版

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

メモ帳++7.3.1

メモ帳++7.3.1

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