2012-03-24 18 views
1

私は次のように非常に基本的な認証スクリプトを実行するに探しています:PHP:ログインとして隠れたGET変数を使用していますか?

<?php 
    // admin.php 
    session_start(); 

    if($_GET['login'] == 'adminLoginWord') 
    { 
     $_SESSION['auth'] = true; 
    } 

    if($_SESSION['auth']) 
    { 
     // code to show Admin control panel 
    } 
    else 
    { 
     echo 'Please login.'; 
    } 

したがって、誰かがURL

admin.php?login=adminLoginWord 

に移動する知っている必要があります、ログインには、これは安全な方法です認証の?

+0

10分前に関連する質問のコメントが寄せられる可能性があります。http://stackoverflow.com/questions/9854559/is-there-any-possible-way-a-visitor-can-access-what-投稿されたメールは – rdlowrey

+0

です。パスワードがあなたにしか届かないデータベースで何かを構築してみるべきです。 – riso

+0

幸せな日々。変数を投稿するためにフォームを使用し、sha1またはmd5を使用します。実際には誰かがadmin.phpに行った場合、アクセス権が与えられていません...ありがとうございます! –

答えて

1

この場合、特に厚くて、必要以上に複雑になっていました。

.htaccessファイルはこれ以上のものでした... woops!

3

それは、これは言っなど...あなたは、コンピュータの歴史の中で、「パスワード」を残して、それが盗聴誰にも非常に脆弱になり、

ない安全ですべてだ、安全は常に、アプリケーションに依存しますしかし、あなたはより安全なアプローチをしたい場合は、POST変数を使用し、そのようにそれを比較:

if($_POST['pass'] == 'password123'){ 
    echo 'Login OK'; 
} 

(まだ最善のアプローチではありませんが、それはGET変数よりはましだもの)

+1

POSTはGETより安全です...クリアテキストはクリアテキストです。 – rdlowrey

+0

素敵な - 答えてくれてありがとう。このURLにアクセスするコンピュータは、すべて同じ建物内にあり、同じ人が使用します。だから、それはコンピュータの歴史にある以外、他の懸念がありますか?ベストプラクティスとして、私はそれをとにかくPOSTに変更します - 興味があるだけです!再度、感謝します。 –

+0

POSTは、機密情報の場合は常にベストプラクティスですが、どちらももちろんリクエストヘッダーに表示されます。 – aurbano

0

んが、それはないですん安全。特別なログインをsha1でハッシュし、sha1が 'adminLoginWord'のsha1と等しいかどうかをテストできます。

さらに、あなたのケースでは、POSTを使用する必要があります。

+2

暗号化されていないハッシュを意味します。 –

+0

よく見られます。上記のようにHTTPSを使用して – Vodun

-1

パスワードを暗号化して、GETの上にそれを送信したり、あなたがこのシステムを使用する場合は、パスワード履歴を保存する任意のブラウザに保存される、ということを認識する必要がありPOST

0

を使用しています。ブックマークとして追加することもできます...

0

いいえ安全ではありません。

あなたは代わりにPOSTを使用しても使用する必要がありHTTPS

+0

を編集しても、さらに優れています... – sdjuan

0

私はあなたが簡単に基本認証をやりたいと思っ理解し、ここでは誰もが有効なセキュリティの提案がありました。セキュリティを本当に気にしませんが、URLに資格情報を渡すよりもセキュリティを強化したい場合は、次のように試してみてください:

/* admin.php */ 
<?php 

$username = "adminLoginWord"; 
$password = "adminLoginWordPassword"; 
$msg = ""; 

if ($_POST['mySiteUsername'] == $username && $_POST['mySitePassword'] == $password){ 
    $_SESSION['auth'] = true; 
} else { 
    $msg = "Invalid Username/Password Combination"; 
} 

if(!$_SESSION['auto']){ 
    $html = "<html> 
    <body> 
    <div class='error'>$msg</div> 
    <form action='admin.php' method='POST'> 
     <label for='mySiteUsername'>Username:</label> 
     <input type='text' name='mySiteUsername' /> 
     <label for='mySitePassword'>Password:</label> 
     <input type='password' name='mySitePassword' /> 
    </form> 
    </body> 
    </html>"; 
} else { 
    // Authorized 
} 
?> 
関連する問題