34 Modern Browser Architecture UI Process Network Process Renderer Process Plugin Process JavaScript Engine Storage Process Device Process GPU Process Browser Process
134 アプリケーションではどのようなクエリが発行されている ? SELECT * FROM products WHERE category = 'Accessories' AND released = 1; // SQL のシンタックスとしておかしいのでエラーになる SELECT * FROM products WHERE category = 'Accessories'' AND released = 1; // シングルクォーテーション 2つでSQLシンタックスとして正しい // クエリの内容は正常系と変わらないので、同じレスポンスが返る SELECT * FROM products WHERE category = 'Accessories''' AND released = 1;
135 全ての商品を表示するにはどうすればいいだろう ? - $input 以降を自由に変更できる - WHERE 句全体が True になれば全部表示できそうですね ;) SELECT * FROM products WHERE category = $input AND released = 1;
136 SQL インジェクションで認証バイパスしてみよう - https://portswigger.net/web-security/sql-injection/lab-login-bypass - administrator でログインしよう - アプリケーションで発行される SQL を想像してペイロードを考えよう - SELECT * FROM users WHERE name = $name AND pass = $pass - SELECT * FROM users WHERE name = 'administrator' OR '1'='1'-- AND pass=$pass
138 脆弱なコード例 $stmt = $pdo->prepare('SELECT * FROM users WHERE city = :city AND gender = :gender'); $stmt->execute([':city' => $city, ':gender' => $gender]); OK $prepare = $pdo->prepare('SELECT * FROM users WHERE id = '. $id. ';'); $prepare->execute(); NG PHP
207 ストレッチング - ソルトを使っても結局総当りには弱いままなので、ハッシュの計算を繰り返し行う ことで、計算時間を遅くする def salt(id) id + "THIS_IS_SALT" end h = "" 100.times do |t| h = hash(h + salt + "password") end