1. ファイル システムのセキュリティ
php に root 権限があり、ユーザーがスクリプト内のファイルを削除できる場合、ユーザーはフィルタリングせずにデータを送信するため、システム ファイルが削除される可能性が高くなります
//指定されたファイルをユーザーディレクトリから削除します
$username = $_POST['user_submitted_name'];
$userfile = $_POST['user_submitted_filename'];
$homedir = "/home/$username ";
unlink ("$homedir/$userfile");
echo "ファイルは削除されました!";
?>
上記のコードは、ユーザーによって送信された $userfile 値が ../etc/ であることを前提としています。 then / etcディレクトリは削除されます
ファイルシステム攻撃を防ぐための戦略は次のとおりです
PHP には制限された権限のみを与えてください
ユーザーが送信した変数は監視およびフィルタリングする必要があり、ファイル パスなどの特殊文字を含めることはできません
必要な場合は、PHP を使用したファイルの操作を避けるようにしてください。ファイルも削除します。これはシステムによって生成されるランダムな名前であり、ユーザーが制御することはできません
2. データベース セキュリティ
データベース セキュリティは主に SQL インジェクション、つまり SQL インジェクション攻撃を防止します。以下に続きます:
データベースに接続するのに root アカウントやデータベース所有者アカウントを使用する必要はありません。
SQL インジェクションを効果的に防止するために php の pdo 拡張機能を使用します。 , php の pdo 拡張機能には、パフォーマンスの面で大きな利点があります
http://php.net/manual/en/pdo.prepared-statements.php を参照してください
パスワード暗号化などの一般的な情報を暗号化します
3.データ フィルタリング
ユーザー データをフィルタリングし、XSS および CSRF 攻撃を防ぐことができます
ホワイトリストを使用します (ユーザー入力は固定パターンです)
たとえば、ユーザー名に数字と文字のみを使用できる場合は、関数 ctype_alnum を使用して決定できます
関数 htmlentities または htmlspecialchars を使用してユーザー入力を処理します。 URL は http 以外のプロトコルで渡すことはできません
ユーザー認証はトークン トークン (csrf) を使用します
http://htmlpurifier.org/ HTML Purifier は、dislay_erros を防ぐ効果的なオープンソース ソリューションです。php で error_log パスを設定できます。 .ini を使用してエラー情報を記録し、ユーザー攻撃の可能性を検出するのに役立ちます)
グローバルの登録、非推奨 (削除) 機能、使用しないでください マジッククオート機能、有効にしないでください、PHP-5.4 で削除されました
を使用してみてくださいPHP の最新バージョン。最新バージョンでは、多くの既知のセキュリティ ホールとバグが修正されています。コード内で上記の戦略を厳密に遵守し、コードに多くのセキュリティ ホールが存在しないことを基本的に保証します。
http://www.bkjia.com/PHPjc/740660.html