質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

Q&A

2回答

512閲覧

sha1とpassword_hashについて

yuki911

総合スコア27

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

0グッド

1クリップ

投稿2019/10/10 08:11

前提・実現したいこと

sha1でパスワード認証をしているのですがあまり良くないと見たのですがどう思いますか?
password_hashに書き換えるならば今のコードを大幅に変更することになりますか?

該当のソースコード

PHP

1<?php 2session_start(); 3require('dbconnect.php'); 4 5if(!isset($_SESSION['join'])){ 6 header('Location: index.php'); 7 exit(); 8} 9 10if($_SERVER['REQUEST_METHOD'] == 'POST'){ 11 //登録処理をする 12 $sql = sprintf('INSERT INTO users SET name="%s", mail="%s", pass="%s"', 13 mysqli_real_escape_string($db, $_SESSION['join']['name']), 14 mysqli_real_escape_string($db, $_SESSION['join']['mail']), 15 mysqli_real_escape_string($db, sha1($_SESSION['join']['pass'])) 16 ); 17 mysqli_query($db, $sql) or die(mysqli_error($db)); 18 unset($_SESSION['join']); 19 20 header('Location: regist.php'); 21 exit(); 22} 23 24?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

sha1でパスワード認証をしているのですがあまり良くないと見たのですがどう思いますか?

はい、単純なsha1では、ハッシュ値ともとの値の対応表もありますので、簡単なパスワードなら容易に特定できてしまいます

とはいえ、いきなりパスワードの仕組みを変えると、過去の全ユーザーがログインできなくなってしまいますので、切り替えには考慮が必要です。

投稿2019/10/10 08:16

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki911

2019/10/10 09:38

ハッシュ値と元の値の対応表があるんですね ユーザーのことも考えないといけないんですね ありがとうございます
guest

0

sha1でパスワード認証をしているのですがあまり良くないと見たのですがどう思いますか?

現在のコードだと、「リスト型攻撃」に対して完全に無防備 です。

password_hashに書き換えるならば今のコードを大幅に変更することになりますか?

修正箇所が1箇所なら大した手間ではないが、sha1とはいえハッシュ化された値を、コンバートするのは困難なので、ユーザー全員に対して新たにパスワードを再設定することを促さなければいけません。

投稿2019/10/10 08:15

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki911

2019/10/10 10:46

リスト型攻撃のことも考慮します。 今はサービスを展開していなくユーザーがいない状態です その場合は全員に対して再設定させなくても大丈夫ですよね? password_hashにする場合今のコードを全部消さなくてはいけませんか?
退会済みユーザー

退会済みユーザー

2019/10/10 10:48

> password_hashにする場合今のコードを全部消さなくてはいけませんか? 必要なところだけでいいんじゃないですか?
yuki911

2019/10/10 15:07

password_hashを定義してsha1のところを変えればいいですか? よければアドバイスもらえると嬉しいです
退会済みユーザー

退会済みユーザー

2019/10/10 15:40

アドバイスといわれても、何がわからないのか伝えてくれないと、教えようがありませんよ。
yuki911

2019/10/11 12:21

すみません sha1をpassword_hashにする方法が知りたいです
退会済みユーザー

退会済みユーザー

2019/10/11 20:19

とりあえず、マニュアルは読んだのかい? このサイトでは、丸投げは非推奨の質問ということになっているので、コードを書いてはいよ!って渡すのは気が引けるわけです。 可能な限りの努力が見える質問をしてくださいませんか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問