1

ユーザー インタラクション用のデータベースを作成するのはこれが初めてで、「ばかげた」質問がいくつかありますが、Google で正しい答えを得る方法がわからないので、次のようにします。

私が欲しいもの:

コメントや記事を書いたユーザーがいるデータベースが必要です。名前や住所などのユーザーの重要な情報と、おそらくそれを回復する必要があるクレジット カードがあります。

私がやった事

ユーザー用のテーブルとその情報を含むデータベースを作成し、コメントを含むテーブルと記事を含むテーブルに関連付けました。

私の問題

1) db 接続を行うとき、毎回同じユーザー (もちろん root ではない) で接続してから、ニックネームとパスを比較しますか? それは私が持っているものですが、誰かが私のユーザーを知っていて、データベースに接続するためのパスがあれば、すべての情報が得られるので、私にとってはかなり奇妙です。各ユーザーのアカウントを持つことを考えていますが、どうすればそのアカウントのものだけを追加//消去/表示するように制限できますか?

2) いくつかの質問を読みましたが、パスワードを保存して bcrypt と比較する必要があることがわかりました。また、クレジット カードの保存はお勧めできないこともわかっているので、おそらくしないでしょうが、残りのもの (住所、名前) を保存するのに最適な方法はどれですか?

3) ユーザーが接続を行い、短時間でより多くのことを行う可能性が高い場合、毎回接続を閉じて開く方が良いですか? どうすればセッションを制御できますか? コードは、モバイル デバイスを mysql に接続するための php で記述されています。

4

2 に答える 2

1

まず、クレジット カードを独自のデータベースに保存しないでください。ストライプのようなものを使用してデータをトークン化します (サインアップは無料で、誰でも受け入れられます)。

独自のユーザー名とパスワードを使用してモバイル アプリを実行している場合は、ユーザー名とパスワードを使用するリモート サーバーが適しています。ハッシュは一方向であるため、通常、暗号化よりもハッシュの方がパスワードには適しています (パスワードが一致するかどうかはわかりますが、パスワードを文字列として取得することはできません)。

データベースへの接続に関しては、直接接続しないでください。サーバー上のAPI / Webサービスを介してそれを行います。

サーバーから情報を取得するには、おそらく json を使用し、GET および POST 要求を使用する必要があります。サーバーでログイン要求を処理する簡単な例を次に示します (デバイスから投稿します)。

<?php

if(isset($_POST['username']) && isset($_POST['password']))
{
  //See if the user's auth details are valid
  $auth = auth_model::try_auth(sanitizer($_POST['username']), sanitizer($_POST['password']));

  //If valid
  if($auth)
  {
    echo json_encode(other_model::some_function_that_returns_array());
    exit;
  }
  else
  {
    echo json_encode(array('error' => 'Authentication failed.'));
    exit;
  }
}

auth_model、sanitizer、および other_model を完全に作成したことに注意してください。たとえば、これらは単にそこにあるだけです。

ほとんどの言語/プラットフォームには、json を使用するためのライブラリがあり、単純な形式であるため、出発点として最も簡単に使用できると思います。

セッション/状態の場合は、セッションをデータベース テーブルに保存し、ID (および実際にセキュリティで保護する必要のないもの) のみをクライアントに返します。

于 2012-07-09T23:20:11.733 に答える
1

アプリから MySQL サーバーへの直接接続を使用しないでください。これは、大きなセキュリティ ギャップです。ユーザーまたはハッカーは、資格情報のトラフィックを盗聴するか、アプリを分解して資格情報を取得することができます。代わりに、PHP と https で保護された HTTP POST および GET を介してサーバー側で実行してください。

MySQL サーバーでアプリのすべてのユーザーにユーザーを自動的に追加することもできますが、それはおそらくもっと複雑です。

于 2012-07-09T23:15:30.773 に答える