DBに接続して認証を行うシステムをPHPとMySQLで作っています。
これで何とか動くには動くのですがセキュリティ的に何か問題があるでしょうか?
またもっと簡単にコードが書けるのなら教えてほしいです。
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post" accept-charset="EUC-JP">
id<input type="text" name="id" value="<?php echo htmlspecialchars($_POST['id']);?>"><br>
<font size="2">パスワード<input type="password" name="pass" value=""><br></font>
<input type="submit" name="foo" value="送信">
</form>
<?php
include "/virtual/nyahi/db_connect.php";//DBに接続
if($_POST['id']){
$post_id= $_POST['id'];
$post_pass= $_POST['pass'];
if(ereg("'",$hoge) ){//シングルクオーテーションはDBに接続させない
die("'←これは嫌い。");
}
if(ereg("'",$_pass) ){//シングルクオーテーションはDBに接続させない
die("'←これは嫌い。");}
$sql = "SELECT *";
$sql.= "FROM user ";
$sql.= "WHERE id='$post_id' and pass='$post_pass'";
$rs = mysql_query($sql,$conn);
if($rs == FALSE){
die ("エラーですよ");}
while($rec = mysql_fetch_array($rs,MYSQL_ASSOC) ){
$ok = 1;//whileループに入ったことで取得を確認
$id = $rec['id'];
$pass = $rec['pass'];}
if(!isset($ok) ){
echo "IDまたはログインパスワードが誤っています。ご確認のうえ、再度ご入力ください。";
}else{echo "ようこそ${id}さん。";}}
?>