1

重複の可能性:
PHPコード内にパスワードを安全に保存する方法は?

これが私がC#プログラムを持っているシナリオです。シリアル番号が私のウェブサイトに送信されます。(例:www.example.com/LicenseCheck.php)は、1234-1234-1234をシリアルとして送信したとしましょう。

次に、licenseCheck.phpが私のmysqlに接続します。

<?php
$username = "your_name";
$password = "your_password";
$hostname = "localhost"; 

//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
  or die("Unable to connect to MySQL");
echo "Connected to MySQL<br>";
?>

次に、有効なシリアルテーブルから「選択」を実行し、ライセンスがテーブルに存在する場合は、それが有効なシリアルであることを意味します。

基本的に、これにアプローチするための良い方法が何であるかを見つけようとしているのです。私は主に「ユーザー名」、「パスワード」をどこに保存するかについて心配しています。基本的に、読み取り権限しか持たないユーザーは1人だけです。

ユーザー名とパスワードをできるだけ隠したいので、安全な方法でこれに取り組みたいと思います。

「安全」とはどういう意味ですか?許可されていないユーザーが私のデータベースに入らないようにする方法です。

すべての助けをありがとう。

4

2 に答える 2

1

mysql関数は使用されなくなりました。私はあなたにあなたのソリューションへのmysqli手続き型アプローチを与えるつもりです。パスワードを安全に保存する方法も含めます。

基本的なmysqli接続とクエリ:

$queryString = "SELECT COUNT(*) FROM table WHERE userName = ? AND password=?";//not the question marks
//the question marks are used to bind our parameters/variables so the query string cannot be adjusted I believe? 
$DBH=mysqli_connect('local','user','pass');
mysqli_select_db($DBH,'database');
$query = mysqli_prepare($DBH,$queryString);
mysqli_bind_param($query,'ss',$username,$passwordHASH);//the second parameter declares the datatypes 
mysqli_execute($query);
//mysqli_bind_result($results); ||not needed in this situation but this is how you'd get results from the database
if(mysqli_fetch($query)){ //adding  && $results = 1 would insure there is only one record
    //username and password match
}
else{
    //error builder etc
}

ここで、パスワードについては、hmac_hash()保護を提供するためにを使用することをお勧めします。データベースにパスワードを挿入するときはhmac_hash()、データベースにクエリを実行するときにパスワードが保護されていることを確認してください。

$passwordHASH = hash_hmac('sha512',$hashThis, '&R4nD0m^');

したがって、基本的に、COUNT(*)ユーザー名とパスワードがとに等しい場合に1を返す$usernameと、クエリ/フェッチはtrueを返します$passwordHASH

#include <mysql.h>しかし、C#でmysqlライブラリ使用できなかったことをすべて言ったのですか?

于 2013-01-19T09:47:32.093 に答える
0

この回答の2番目の箇条書きを見てください。基本的に、MySQL接続の詳細をドキュメントルートの外部にある構成ファイル(例:public_html /など)に入れてから、そのファイルを要求する必要があります。

于 2013-01-19T09:36:01.993 に答える