2

したがって、データベース mysql.user には、パスワード暗号化方式で保存されたユーザー (デフォルトでは、私が知っていることから) と、ログイン資格情報を持つユーザーとパスワード (パスワードは md5 で暗号化されています) を持つ database.users があります。問題は、ユーザーがデータベースを照会できる状態で、md5 を使用して (フォームから) 挿入されたパスワードを暗号化したいことです。

これらは、フォームの $_POST メソッドから抽出され、接続時に簡単に使用できるようにセッションとして作成されたログイン資格情報です。

$_SESSION['utilizator']=$utilizator; //user
$_SESSION['parola']=md5($parola); //password

これは、データベースにクエリを実行する必要があるすべてのファイルに含まれる DB 接続です。

$link = mysqli_connect('localhost', $_SESSION['utilizator'], $_SESSION['parola']);
if(!$link){
    die('Unable to connect to the database: ' . mysqli_error($link));
}
4

3 に答える 3

2

セッションに保存する前に、ユーザー名とパスワードをトリミングしてサニタイズすることをお勧めします。mysqli_connectに関しては、 4 つの引数を取ります

<?php $link = mysqli_connect("myhost","myuser","mypassword","mydatabase") or die("Error " .     mysqli_error($link));?>

php ページのmysql-_connectの例を見てください。あなたのコードで気付いたもう 1 つのことは、ユーザーがデータベースにログインする必要があるのはなぜですか? セキュリティ上の理由から、データベース ユーザーとアプリ ユーザーは異なる必要があります。

于 2013-08-17T09:46:12.550 に答える
2

もう安全ではないため、md5 を使用しないようにしてください。ユーザー資格情報を使用してデータベースに接続しているのはなぜですか? そのためのパスワードとユーザーが必要で、DB接続が必要な場所ならどこでもそれを使用し、ユーザーがログインに合格した場合にのみDBを変更できるようにします(あなたがしていることは安全ではありません)、つまりそれらのユーザー資格情報DB および DB 専用であり、あなただけが知っています。これを行った後、ユーザー関連のものをテーブルに保存できます。パスとユーザー名を希望どおりに暗号化し、暗号化されたパスとDBパスをチェックするログインを作成し、問題がなければクエリを作成します。

編集:

パスを Cookie またはセッションに保存する必要があるため、暗号化されたパスワードを単純に保存して、DB 内のパスワードと同じかどうかを確認できるため、この方法が役立ちます。

于 2013-08-17T09:44:34.483 に答える
1

MySQL は md5 を使用してユーザー パスワードを保存しません (少なくともデフォルトでは)。MySQLのPASSWORD()機能を利用しています。パスワードを実行せずに使用すると、md5()機能するはずです。

$_SESSION['parola']=$parola; //password
于 2013-08-17T09:40:09.313 に答える