複数の開発者が作業し、定期的な更新とメンテナンスを受けるプロジェクトを考えると、読みやすさとセキュリティを考慮して、以下の 2 つのコードのどれが PHP のベスト プラクティスと見なすことができますか? パフォーマンスで言えば、おそらく2番目のオプションの方が少し良いでしょうが、この点を解決する方法があります。
オプション1
$user = $_POST['user'];
$pass = $_POST['pass'];
// Prevent SQL Injection and XSS
$user = anti_injection($user);
$pass = anti_injection($pass);
if(strlen($user) <= 8 && strlen($pass) <= 12)
{
// SQL query
$sql = "SELECT id
FROM users
WHERE username = '$user' AND password = '$pass';";
}
オプション 2
// Retrieve POST variables and prevent SQL Injection and XSS
$_POST['user'] = anti_injection($_POST['user']);
$_POST['pass'] = anti_injection($_POST['pass']);
if(strlen($_POST['user']) <= 8 && strlen($_POST['pass']) <= 12)
{
// SQL query
$sql = "SELECT id
FROM users
WHERE username = '" . $_POST['user']. "' AND password = '" . $_POST['pass'] . "';";
}
編集1
MySQL は使用していません。データベースは PostgreSQL です。