0

ユーザーのIDを見つけるこの小さな関数を作成しました。以前に含めたので、そのIDをWebサイト全体で利用できます<head>

$result=mysql_query("SELECT ID FROM korisnici WHERE username='".$_COOKIE["user"]."' AND password='".$_COOKIE["pass"]."'");
$get=mysql_fetch_assoc($result);
$ID_KORISNIK=$get["ID"];
if(empty($ID_KORISNIK))
{
    echo '
        <script>window.location="IDerror.php";</script>
        ';
}

だから私が使用できるデータベースにSELECTまたはINSERTしたい

$r=mysql_query("SELECT * FROM uzg WHERE IDkorisnik='$ID_KORISNIK'");

またはJOINを使用

$r=mysql_query("SELECT * FROM uzg JOIN (uzg.IDkorisnik=korisnici.ID) WHERE korisnici.username='$_COOKIE["user"]' AND korisnici.password='$_COOKIE["pass"]'");

どちらが優れているか効果的だと思いますか?

4

2 に答える 2

1
  1. パスワードを Cookie として保存しない
  2. ユーザー入力を信頼しないでください。クエリは SQL インジェクション攻撃の対象となります
  3. 関数を使用せずmysql_*、PDO またはmysqli_*を使用し、準備済みステートメントを使用して SQL インジェクション攻撃を防ぎます

プリペアド ステートメントについて学び、 PDOまたはMySQLiを使用することをお勧めします。この記事は、どちらを決定するのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

ちなみに、最初の解決策の方が優れていると思います(ただし、多くのものを修正する必要があります)

于 2013-03-28T18:00:58.137 に答える
1

それが大規模なプロジェクトである場合、私は User クラスを使用したいので、単純にそれを呼び出します

$new_user->id;

しかし、そうでない場合は、最初のアプローチの方がはるかに優れていますが、最初に入力が有効なIDであるかどうかを確認しません。有効なIDであることを確認したら[既存のintである可能性があります]、最初のアプローチを使用します

ハッシュは簡単に解読できるため、ハッシュが悪い場合でもユーザーの PWD を保存するため、Cookie の盗用に対する検証が必要な場合は、他のハッシュを配置します。

于 2013-03-28T18:12:40.913 に答える