security - SQLインジェクション エスケープ PHP - PHPでSQLインジェクションを防ぐにはどうしたらいいですか?

PHP SQL / php / mysql / sql / sql-injection

次の例のように、ユーザー入力を変更せずにSQLクエリに挿入すると、アプリケーションはSQLインジェクションに対して脆弱になります。

$unsafe_variable = $_POST['user_input']; 

mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')");
INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')

44 revs, 36 users 14%



Answer #1

可能であれば、パラメータの型をキャストしてください。ただし、int、bool、floatのような単純な型にしか使えません。

$unsafe_variable = $_POST['user_id'];

$safe_variable = (int)$unsafe_variable ;

mysqli_query($conn, "INSERT INTO table (column) VALUES ('" . $safe_variable . "')");