stormy_gunner stormy_gunner 2017-05-21 11:42:11

[PHP] ログイン処理 このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

もう突っ込みどころが多すぎで、卒倒したソースでした。 色々うんこが多すぎて・・・ちなみに「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;

//しかもこの下でログイン失敗のログ書き込み
//・・・・
//

?>

使い方ヒント: 「これは臭う」という行を見付けたら、各行のsmellをクリックしてマーキングしておきましょう(要Twitter OAuth認証)

コメント(4)

#1 remi_ts remi_ts 2017-05-25 13:04:46  

突っ込みどころ多すぎて笑うw

#2 darth_tossy darth_tossy 2017-05-26 13:00:37  

その自称優秀君、とりあえずSQLインジェクションの可能性には気付け!

#3 Luca_Maud1125 Luca_Maud1125 2017-05-29 11:01:32  

ID「hogehoge'; DROP TABLE user; --」とかで誰もログインできなくなりそう

#4 is_1010 is_1010 2017-06-15 16:44:34  

毎回、ログ書き込み?リダイレクトしたらexitしろ!

コメント投稿には、twitter認証が必要です。

Twitter認証

このウンコードに臭った人は、こちらのウンコードにも臭ってます

[PHP] 見た目はコメント、中身は未定義

このエントリーをはてなブックマークに追加

シンタックスハイライトに騙されてしまいま...

<!-- 未定義なのでコメントアウト
<?php undefined_func...

鑑賞する »

[その他] [PL/SQL]自動生成?いいえ、手書き...

このエントリーをはてなブックマークに追加

処理本体はあえて除外したくなるほどの衝撃...

PROCEDURE my_annonymous_arguments (
   ...

鑑賞する »

[C#] 7重の波括弧が織りなすハーモニー

このエントリーをはてなブックマークに追加

(なお実物はもっとひどかった)

Task.Delay(0).ContinueWith(async (task) ...

鑑賞する »