C#でログイン認証をWeb上のMysqlからユーザーIDとPWを比較して
認証するようプログラムを作りました。
とりあえず、動くようにはなったのですが
現段階ではパスワードが平文なので、流石にマズイのでハッシュ化をしたいと思っております。
WEB側はLaravel5.7でユーザーの作成などの管理画面を作成しております。
Laravel5.7でユーザーを作るとパスワードがハッシュ化されるので
C#で作ったログイン認証画面よりハッシュ化されたパスワードを認証させたいのですが
どのようにすればよいのか?行き詰ってしまいました。
どうすれば認証させられますか??
ご提示のコードの、どの部分にどのような問題がありますか?明記していただけると、回答する際に分かりやすいです。
コードに問題は無いです
このコードからLaravel5.7で生成されるパスワードのハッシュ値とC#で入力されたパスワードをハッシュ化
したときに同じようになる方法が知りたいです。
ん? 今のコードではやりたいことが実現できていないのですよね?でしたらご提示のコードには何か解決すべき「問題」があるのでは?
認証先がLaravel5.7でパスワード生成していまして
C#からパスワードを入力したときに、ハッシュ化されたパスワードをどうしたら認証させられるのか?が知りたいです。
現状のコードは平文だと認証します。
ちょっと私の伝え方が良くなかったようで、あまり意図が伝わっていないようですね。
「コードの何行目の○○という部分に××という問題がある」というような説明にしていただきたい、ということです。
例:
46行目の `+ "' and password LIKE '" + Login_pw.Text + "'"` の部分で、`Login_pw.Text` には画面から入力されたパスワードが平文で入っています。これで一応認証はできるのですが、平文パスワードを含んだSQLを投げるのは避けたいので、Login_pw.Text のハッシュ(Laravel5.7で生成するハッシュと同じ値)をどうにかして取得したいです。
スミマセン、まさにその通りです
修正します
:)
徳丸先生を呼ぶためにセキュリティタグをつけておいた方がいいと思います。C# の問題ではなく、データベースの中にパスワードを保存しているのがまずいですね。https を使っているなら暗号化されているので、生のパスワードを通信するのは特に問題ないと私は思いますが、パスワードの通信回数を減らすためにアクセストークンを使ってセキュリティを高める方法もよく知られています。
それと、SQL を構築するのに文字列の連結を使っているのもよくありません。
返答ありがとうございます。
Laravelでユーザーの管理をしたいので、デフォルトでパスワードがハッシュ化されてしまうんです^^;
Laravelでパスワードをハッシュ化させないで保存する方法もあると思いますが
勉強も兼ねてハッシュで認証する方法を知りたいと思い質問させていただきました。
Laravel のハッシュアルゴリズムは config/hashing.php で指定されるそうです。
https://readouble.com/laravel/5.6/ja/hashing.html
BCrypt ならば BCrypt.Net が使えそうです。
https://github.com/BcryptNet/bcrypt.net
BCrypt.Net を実装してみましたがダメっぽかったです
では無理なのでは?
認証用のWebサービスをPHPで書けばいいんじゃないの?
> BCrypt.Net
これの使い方がおかしいのでは。
bcryptの場合、同じパスワードを使っても同じハッシュは生成されません。MD5やSHA系とは違います。
Bcryptの場合は入力されたIDと同じIDのレコードを取得してから
該当のレコードにあるパスワードと入力されたパスワードをBcryptのVerifyで検証する。という手順になりますが
本記事中のやつは自前でハッシュしてからSQLで一致する行を取得となっています
回答2件
あなたの回答
tips
プレビュー