SQLインジェクションに対して脆弱なログインを作成しました。これは素晴らしいことです。ただし、ログイン時にDROPTABLEを使用する人は避けたいと思います。たとえば、入力にdropやtableなどの単語が含まれているかどうかをどうにかして確認できますか?
ありがとう。
SQLインジェクションに対して脆弱なログインを作成しました。これは素晴らしいことです。ただし、ログイン時にDROPTABLEを使用する人は避けたいと思います。たとえば、入力にdropやtableなどの単語が含まれているかどうかをどうにかして確認できますか?
ありがとう。
SQLインジェクションの問題を解決するシンプルなPDOデータベースライブラリを使用することをお勧めします。
コードを読んでください。それほど長くはありません(〜3kb)。プリペアドステートメントを使用してデータベースクエリを操作する方法を説明します。その後、移行、クエリビルダー、ORM実装などの機能を備えた実際のデータベースライブラリに移動できます。
$pdo = new PDO(...)
$name = $_POST['name'];
// @todo make sure it's a good name
$statement = $pdo->prepare('INSERT INTO `user` (`name`) VALUES (?)');
$statement->execute(array($name));
$user_id = $pdo->lastInsertId();
さて、質問を読み直しましたが、実際にはSQLインジェクションのデモシステムが必要です。特定の種類のSQLインジェクションの影響を受けたくないだけですか。これは、問題を起こす価値のない悪い考えのように聞こえます。各ページリクエストを破棄して再作成できるSQLiteデータベースをセットアップすれば、心配する必要はありません。
if (false !== stripos($_POST['username'], 'DROP'))
投稿された「ユーザー名」フィールドに「DROP」という単語が記載されているかどうかを知りたい場合に機能します。