1

まず、お時間をいただきありがとうございます。件名が言うように...私はログインページをやっていますが、すべての検索で同じコードに送られます:

use posted user & pass
connect to mysql
search for the user & pass posted
if returns records then ok 
else bad access

しかし、私はこのようにやっています(そして、誰かが私が間違っているかどうか、そしてその理由を教えてくれることを願っています)

session_start();
$user=$_POST['user'];
$pass=$_POST['password'];
$link=mysql_connect('localhost',$user,$pass);
if(!link){
   echo "Access denied";
}else{
   echo "Access OK";
   $_SESSION['user']=$user;
   $_SESSION['password']=$password;
}

そして、ユーザーがログインしているかどうかを確認する必要があるたびに、mysql に同じ接続を行います。コードインジェクションの可能性はありますか? (Sql インジェクション、PHP スクリプトなど) これは悪い習慣ですか? リスクはありますか?

ところで、これは私にとってはうまくいきますが、インターネットに載せたいので、ハッキングされたくありません。ありがとう

4

2 に答える 2

3

他の回答が何を言っているかにかかわらず、現状のコードは SQL インジェクションに対して脆弱ではありません。その理由は、SQL を深刻に誤用しているからです。

データベースの資格情報とユーザーの資格情報は同じであってはなりません。データベースのユーザー名/パスワードは、PHP スクリプトとデータベースの間で共有されるシークレットである必要があります。通常は、データベースusersにテーブルを作成し、そこにユーザー レコードを保存します。これが、チュートリアルでユーザー レコードに言及し、パスワードを比較する理由です。複数のユーザー レコードがテーブル内のデータとしてデータベース内に格納されています。select

現在のシステムでは、システムの各ユーザーごとに新しいデータベース ユーザーを作成する必要があります。これは管理上の悪夢となり、新たなセキュリティ上の問題が大量に発生します。

于 2011-08-10T05:49:26.923 に答える
-2

$ _POST ['password']ではなく、mysql_real_escape_string($ _POST ['password'])と記述し、SQLインジェクションとstrip_tags($ _ POST ['password'])を回避してすべてのhtmlタグとphpタグ..

これにより、セキュリティを強化できます。

于 2011-08-10T05:42:12.320 に答える