SQLインジェクションを実行する機能は、入力のタイプに依存せず、受け取った値をどのように使用するかによって異なります。HTML入力コントロールとその結果のフォーム送信は、何でも含めるように手動で編集できます。したがって、必要な情報のみが含まれるように、入力をサニタイズおよび削減する必要があります。
したがって、次のようにチェックボックスを使用すると...
if ($_POST['checkbox'] == 'on') { $val = 1; } else { $ val = 0; }
mysql_query("UPDATE table SET checkbox=$val");
あなたは安全です。一方、ユーザーから受け取った値を直接保存して比較する場合は...
mysql_query("UPDATE table SET checkbox={$_POST['checkbox']}")
...
if ($row['checkbox'] == 'on') { /* enable something */ }
次に、「すべてのデータはハッカーに属します」:)
2番目の質問については、この特定のケースpreg
では十分かもしれませんが、正規表現を変更したり、誤って変更したりすると、不十分になる可能性があります。このようなエラーによってコードがSQLインジェクションに対して脆弱にならないように、データベースに提供されたデータを常にエスケープすることをお勧めします。