いつもお世話になっております。
PHPでMySQLに接続した時の脆弱性についての質問です。
今回、サービスを本番稼働させるに当たって、
フォームからの情報入力でデータベースへの不正書き換えが
行われないかどうかを確認したいです。
試したこと。
DBの接続はPDO接続する。
php
1<?php 2if(isset($_GET['id'])) { 3 $id = $_GET['id']; 4 } 5 6$con = new PDO('mysql:host=localhost;dbname=pdodb','root','dbpass'); 7 8$user = $con->query(" 9 SELECT * FROM users 10 WHERE id = '$id' 11 "); 12 13$user = $user->fetch(PDO::FETCH_OBJ); 14 15echo $user->first_name; 16 17}
php
1if(isset($_POST['submit'])) { 2 $email = $_POST['email']; 3 } 4 5$con = new PDO('mysql:host=localhost;dbname=pdodb','root','dbpass'); 6 7$user = $con->prepare(" 8 INSERT INTO users(email) 9 VALUES (:e_mail) 10 "); 11 12$userExcution = $user->execute([ 13 'e_mail' => '$email' 14 ]);
受け取った
$_GET['id']や$_POST['email']を
$POST = filter_var_array( $_POST, FILTER_SANITIZE_STRING);
や
htmlspecialchars()を使うこともmysqliで接続していた際は使っていましたが、
PDOで接続する場合は基本不要だというのが私の解釈です。
CRUDはPDOで接続しておけば、SQLインジェクション等の脆弱性対策として十分ということなら
大手を振って多くの人に使って頂けると思うのですが、
もし、不十分であるならばぜひご指摘ください。
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー