PHP のいくつかのセキュリティ設定 (最適化)
スクリプト言語と初期バージョンの設計に起因するさまざまな理由により、PHP プロジェクトには多くのセキュリティ リスクが存在します。構成オプションから、次の最適化を行うことができます。
1. PHP エラー出力をシールドします。
#/etc/php.ini (デフォルトの設定ファイルの場所) で、次の設定値を Offdisplay_errors=Off## に変更します。 #ハッカーによる関連情報の利用を防ぐため、エラー スタック情報を Web ページに直接出力しないでください。
トラブルシューティングを容易にするために、エラー ログをログ ファイルに書き込みます。
2. PHP バージョンをブロックします。
デフォルトでは、PHP バージョンは次のような戻りヘッダーに表示されます。
Response Headers X-powered-by: PHP/7.2.0php.ini の次の設定値を Off
グローバル変数が有効になっている場合、フォームから送信された一部のデータは自動的にグローバル変数として登録されます。コードは次のとおりです。
<form action="/login" method="post"> <input name="username" type="text"> <input name="password" type="password"> <input type="submit" value="submit" name="submit"> </form>
グローバル変数が有効になっている場合、サーバー側の PHP スクリプトは $username と $password を使用してユーザー名とパスワードを取得できます。これにより、スクリプト インジェクションの大きな危険が生じます。
これを有効にする方法は、php.ini で次のように変更することです:register_globals=On
パラメータは次のとおりです:
オフにすると、関連するパラメータは $_POST、$ からのみ取得できます。 _GET、$_REQUEST。
4. ファイル システムの制限
open_basedir を使用して、PHP がアクセスできるシステム ディレクトリを制限できます。
以下のスクリプトコード(hack.php)を制限なく使用すると、システムパスワードを取得できます。
<?php echo file_get_contents('/etc/passwd');
設定すると、エラーが報告され、関連情報が表示されなくなり、システム ディレクトリ b が不正にアクセスされなくなります:
PHP Warning: file_get_contents(): open_basedir restriction in effect. File(/etc/passwd) is not within the allowed path(s): (/var/www) in /var/www/hack.php on line 3 Warning: file_get_contents(): open_basedir restriction in effect. File(/etc/passwd) is not within the allowed path(s): (/var/www) in /var/www/hack.php on line 3 PHP Warning: file_get_contents(/etc/passwd): failed to open stream: Operation not permitted in /var/www/hack.php on line 3 Warning: file_get_contents(/etc/passwd): failed to open stream: Operation not permitted in /var/www/hack.php on line 3
設定
open_basedir=/var/www
5. リモートリソースへのアクセスを禁止します。
allow_url_fopen=Off
allow_url_include=Off
Suhosin は、PHP プログラムの保護システムです。これはもともと、PHP プログラムと PHP コアの既知または未知の欠陥からサーバーとユーザーを保護するために設計されました (非常に実用的で、いくつかの軽微な攻撃に耐えることができます)。スホシンには 2 つの独立したパーツがあり、別々に使用することも、組み合わせて使用することもできます。
最初の部分は、バッファ オーバーフローやフォーマット文字列の弱点に対処できる PHP コア用のパッチです (これは必須です!);
2 番目の部分は、強力な PHP 拡張機能 (拡張機能) です。モードは非常に優れており、インストールが簡単です...)、他のすべての保護手段を含みます。
拡張機能のインストール
wget http://download.suhosin.org/suhosin-0.9.37.1.tar.gz tar 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
機能
●エミュレータ保護モード
# 2 つの関数 sha256() と sha256_file( ) を追加します。 PHP コア
# すべてのプラットフォーム、CRYPT_BLOWFISH を関数 crypt() に追加します
# phpinfo() ページの透過的保護をオンにします
## SQL データベース ユーザー保護 (テスト段階) #実行時保護#● 暗号化された cookie● さまざまなタイプの組み込み脆弱性を防止 (リモート URL の組み込みは許可されていません (ハッキング/ホワイトリスト) ); アップロードされたファイルを含めることを許可しません; ディレクトリ トラバーサル攻撃を防ぎます)
# preg_replace() の禁止を許可します # eval() 関数の禁止を許可します #パス 無限再帰を防ぐために最大実行深度を構成します##● ブラック リストとホワイト リストを構成する各仮想ホストをサポートします
## コード実行用に個別の関数のブラック リストとホワイト リストを提供します## HTTP 応答の分割の脆弱性を防止します。
#● スクリプトによるmemory_limit オプションの制御を防止します。#● 関数 extract()、import_request_vars() などの PHP スーパーグローバルを保護します。
● 新しい脆弱性を防止します。 mail() 関数 Line 攻撃
##● preg_replace() 攻撃の防止#セッション保護● セッション データの暗号化##● 防止セッションがハイジャックされるのを防ぐ
##● 長すぎるセッション ID を防止する##● 悪意のあるセッション ID を防止する
##SESSION 内のデータは、通常、サーバー上にクリア テキストで保存されます。ここで、$_SESSION はサーバー側で暗号化および復号されます。このようにして、セッション ハンドルが Memcache またはデータベースに保存されると、簡単には壊れなくなります。多くの場合、セッション データには機密フィールドが保存されます。 この機能はデフォルトで有効になっており、php.ini を通じて変更することもできます。suhosin.session.encrypt = On suhosin.session.cryptkey = zuHywawAthLavJohyRilvyecyondOdjo suhosin.session.cryptua = On suhosin.session.cryptdocroot = On ;; IPv4 only suhosin.session.cryptraddr = 0 suhosin.session.checkraddr = 0
Cookie Encryption
クライアントのブラウザの Cookie によって送信される HTTP ヘッダーもクリア テキストです。 Cookie を暗号化することで、Cookie 改ざんなどのさまざまな攻撃からアプリケーションを保護できます。攻撃者は、他の妥当な Cookie 値を推測してプログラムを攻撃しようとする可能性があります。 アプリケーション全体での Cookie の使用: 不適切に構成されたアプリケーションは、同じセッション ストレージを持つ可能性があります。たとえば、デフォルトでは、すべてのセッションが /tmp ディレクトリに保存されます。あるアプリケーションからの Cookie は、別のアプリケーションで再利用されることはありません。暗号化キーが異なる限り。 php.ini での Cookie 暗号化設定:
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 = 0 suhosin.cookie.checkraddr = 0 Blocking 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('<test>'); eval('echo htmlentities("<test>");');
##显式指定指定黑名单列表 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教程!
以上がPHP のいくつかのセキュリティ設定 (最適化)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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

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

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