もう突っ込みどころが多すぎで、卒倒したソースでした。 色々うんこが多すぎて・・・ちなみに「user」テーブルには削除フラグ「DEL_FLG」があり、ユーザー削除時に1にしていたようです。
もちろん、コレは地獄への入り口・・・・他の部分もコレに劣るともまさらない、地獄コード。 もう、人様のソースを触ると地獄へ行くと痛感したソースでした。
しかし・・・僕すごいんだよ、優秀なんだよというスーバーPHPエンジニアに見せたら、真顔でどこがおかしいんですか?って言われました。
もちろん、全て作り直し、DBはマイグレーションしたものの、もとの糞な構造に引きずられて、変な数値の持ち方で後々、死亡しました。(0:削除 1:表示 2:削除 3:保留中とか)
<?php /********************************************************* ログイン処理 *********************************************************/ if ($_POST["mode"]=="login"){ //ユーザ情報取得 $sql = "SELECT * "; $sql.= " from user"; $sql.= " where ID = '" .$_POST["ID"]. "'"; $rs = mySQLQuery($sql); while ($item = mysql_fetch_array($rs)) { $userData = $item; } if ( $userData['PASSWORD'] == $_POST["PW"] ) { header("HTTP/1.1 301 Moved Permanently"); //ユーザタイプチェック if ($userData["TYPE"]=="1"){ header("Location: ./mastermenu.php"); }else if ($userData["TYPE"]=="2"){ if ($_SESSION["RETURN_URL"]!=""){ header("Location: ./".$_SESSION["RETURN_URL"]); }else{ header("Location: ./usermenu.php"); } } }else{ $errMSG.="<font style=\"color:#ff0000;\">ID、又はパスワードに誤りがあります。</font>"; } } echo $errMSG; //しかもこの下でログイン失敗のログ書き込み //・・・・ // ?>
使い方ヒント: 「これは臭う」という行を見付けたら、各行のをクリックしてマーキングしておきましょう(要Twitter OAuth認証)
その自称優秀君、とりあえずSQLインジェクションの可能性には気付け!
ID「hogehoge'; DROP TABLE user; --」とかで誰もログインできなくなりそう
コメント投稿には、twitter認証が必要です。
Twitter認証
突っ込みどころ多すぎて笑うw