1

ユーザーのアカウント番号に基づいてデータを取得するコードを取得しました

ここに私が使用しているものがあります(そして、はい、それが私の投稿の理由である今では安全ではないことを知っています)

<?php

include('config.php');

$user_info = fetch_user_info($_GET['AccountNumber']);

?>
<html>
<body>
<div>
<?php
if ($user_info === false){
$Output = 'http://www.MyDomain.Com/';
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$Output.'">';
}else{
?>
<center>
<title><?php echo $user_info['FirstName'], ' ', $user_info['LastName'], ' - ',     $user_info['City'], ', ', $user_info['State']; ?> - Name of site</title>

つまり、基本的にこのコードでできることは、Profile.php というファイルを用意することです。ユーザーがこのページにアクセスすると、データが返されます。

このようにhttp://MyDomain.com/Profile.php?AccountNumber=50b9c965b7c3b

これを安全に行うにはどうすればよいですか?現在、get メソッドを使用して URL バーからアカウント番号を取得するのは本当に安全ではありません。

4

2 に答える 2

0

GET の代わりにデータを POST する必要がある別のページから来ていますか?

GET から情報を取得することはそれほど危険ではありません。で値をエスケープする必要があるだけmysql_real_escape_string()なので、次のようになります。

$user_info = fetch_user_info(mysql_real_escape_string($_GET['AccountNumber']));

これにより、SQL インジェクション攻撃から保護されます。さらに良いのは、準備済みステートメントとPDOを使用することです。

そのロジックはすべて、ソースが含まれていない fetch_user_info の背後に隠されているため、現在実行しているクエリを正確に知ることはできません。そのコードを含めていただければ、もう少しセキュリティを確保できる可能性があります。

于 2012-12-13T04:53:45.580 に答える
0

現在のユーザー プロファイルのみを表示する場合は、ユーザーがログインするときにユーザー ID またはアカウント番号をセッションに保存する必要があります。次に、プロファイル ページで、セッションからアカウント番号を取得し、詳細を表示します。アクティブなセッションがない場合は、ユーザーをログイン ページにリダイレクトできます。

于 2012-12-13T05:00:59.257 に答える