PHP での SQL インジェクションに対する保護
適切な予防措置を講じずにユーザー入力を SQL クエリに統合すると、SQL インジェクションに対するコードの脆弱性が発生します。次の脆弱なコード スニペットを考えてみましょう。
$unsafe_variable = $_POST['user_input']; mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')");
このシナリオは、値') などのユーザー入力文字列を介して悪用される可能性があります。 DROP TABLE テーブル;--、悪意のあるクエリにつながります:
INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')
防止戦略
このような攻撃を回避するには、データを SQL から分離し、データがデータとして扱われるようにすることが不可欠です。 SQL パーサーによってコマンドとして解釈されません。パラメータ化されたクエリを含むプリペアド ステートメントは、SQL ステートメントとパラメータ値を分離する堅牢なソリューションを提供します。データベース サーバーは SQL ステートメントを解析してコンパイルし、パラメータを文字列として扱い、悪意のある SQL インジェクションの試みを効果的にブロックします。
プリペアド ステートメントの実装
PDO
$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name'); $stmt->execute([ 'name' => $name ]); foreach ($stmt as $row) { // Do something with $row }
MySQLi for MySQL (PHP 8.2 )
$result = $db->execute_query('SELECT * FROM employees WHERE name = ?', [$name]); while ($row = $result->fetch_assoc()) { // Do something with $row }
MySQLi 用MySQL (PHP 8.1 まで)
$stmt = $db->prepare('SELECT * FROM employees WHERE name = ?'); $stmt->bind_param('s', $name); // 's' specifies the variable type => 'string' $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { // Do something with $row }
PDO および MySQLi に関する追加の注意事項
PDO
デフォルトでは、PDO はエミュレートされたプリペアド ステートメントを使用します。エミュレーションを無効にして、MySQL に対して真のプリペアド ステートメントを強制するには、次のように設定します。
$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
MySQLi
同様に、次のように設定します。
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // error reporting $dbConnection = new mysqli('127.0.0.1', 'username', 'password', 'test'); $dbConnection->set_charset('utf8mb4'); // charset
プリペアド ステートメントについて
準備されたステートメントは、実行時にデータベース サーバーによって解析およびコンパイルされます。パラメーターは、フィルターを適用する場所をデータベース エンジンに通知します。値を指定して準備されたステートメントを実行すると、コンパイルされたステートメントは SQL 文字列ではなく、それらの値と結合されます。これにより、意図しない SQL 実行につながる可能性のある悪意のある文字列の挿入が防止されます。
警告
準備されたステートメントは、クエリ構造が変更される動的クエリには適していません。このような場合、可能な値を制限するホワイトリスト フィルターを使用する必要があります。
以上がプリペアドステートメントはどのようにして PHP での SQL インジェクションを防ぐことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

thesecrettokeepingaphp-poweredwebsterunningsmootlyunderheavyloadinvolvesseveralkeystrategies:1)emform opcodecoduceSciptionexecutiontime、2)aatabasequerycachingwithiThing withiThistolessendavasoload、

コードをより明確かつ維持しやすくするため、依存関係が関心(DI)に注意する必要があります。 1)DIは、クラスを切り離すことにより、よりモジュール化されます。2)テストとコードの柔軟性の利便性を向上させ、3)DIコンテナを使用して複雑な依存関係を管理しますが、パフォーマンスの影響と円形の依存関係に注意してください。

はい、最適化されたAphPossibleandessention.1)CachingingusapCutoredatedAtabaseload.2)最適化、効率的なQueries、およびConnectionPooling.3)EnhcodeCodewithBultinctions、Avoididingglobalbariables、およびUsingopcodeching

keyStrategIestsoSificlyvoostphpappliceperformanceare:1)useopcodecachinglikeToreexecutiontime、2)最適化abaseの相互作用とプロペラインデックス、3)3)構成

aphpDependencyInjectionContaineriSATOULTAINATINAGECLASSDEPTINCIES、強化測定性、テスト可能性、および維持可能性。

SELECT DEPENTENCINGINOFCENT(DI)大規模なアプリケーションの場合、ServicElocatorは小さなプロジェクトまたはプロトタイプに適しています。 1)DIは、コンストラクターインジェクションを通じてコードのテスト可能性とモジュール性を改善します。 2)ServiceLocatorは、センター登録を通じてサービスを取得します。これは便利ですが、コードカップリングの増加につながる可能性があります。

phpapplicationscanbeoptimizedforspeedandEfficiencyby:1)enabingopcacheinphp.ini、2)PreparedStatementswithpordatabasequeriesを使用して、3)LoopswithArray_filterandarray_mapfordataprocessing、4)の構成ngincasaSearverseproxy、5)

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

WebStorm Mac版
便利なJavaScript開発ツール
