女子高生が語る!SQLインジェクション対策ってなに?プレースホルダでバッチリ防ぐ方法も教えるよ!

セキュリティ実装技術

概要

大好きなアプリやサイト、実はSQLインジェクションって恐ろしい攻撃に狙われてるかも… でも大丈夫!今日だけは女子高生探偵の私が、その正体と退治方法を徹底解説しちゃうよ!難しい話はなし、プレースホルダって便利な武器も紹介しちゃうから、安心して読んでね!

説明

SQLインジェクションって、まるで悪者がアプリやサイトに忍び込んで、個人情報や大切なデータを盗み出す恐ろしい犯罪なの! しかも、その手口はとっても巧妙で、まるで透明人間のように気付かれずに侵入しちゃうんだ。

でも、心配しないで!私たちには、SQLインジェクション対策って正義の武器があるの!具体的には、パラメータバインディングとプレースホルダって2つの必殺技があるんだけど、今日は初心者でも簡単に使えるプレースホルダに注目してみよう!

プレースホルダって何?

プレースホルダは、まるで宝箱の鍵みたいなもの!正しい鍵を使えば、宝箱を開けて大切なデータを守れるんだけど、間違った鍵を使えば… まあ、データベースのデータが盗まれちゃうってことね。

プレースホルダの使い方

プレースホルダを使うには、まずSQL文に ? を使うの。例えば、ログイン画面でユーザー名とパスワードを入力する時、こんなSQL文になるんだけど…

SQL

SELECT * FROM users WHERE username = '$_POST['username']' AND password = '$_POST['password']';

これがプレースホルダを使うと、こうなるの!

SQL

SELECT * FROM users WHERE username = ? AND password = ?;

そして、この ? に実際のユーザー名とパスワードを代入するのよ。

PHP

$username = $_POST['username'];
$password = $_POST['password'];

$stmt = $db->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$stmt->bindParam(1, $username);
$stmt->bindParam(2, $password);
$stmt->execute();

これで、悪者が入力した不正な文字列がSQL文に組み込まれるのを防いで、大切なデータをバッチリ守れるってわけ!

まとめ

SQLインジェクションは恐ろしい攻撃だけど、プレースホルダを使えば女子高生でも簡単に退治できるの!今日学んだことを忘れずに、大切なアプリやサイトを守ってね!

参考Webサイト

タイトルとURLをコピーしました