1

1 人だけに許可された PHP ページを作成しました。それは問題ありませんが、許可されていないユーザーがアドレス バーview-source:tstwebsite.com/test/page.phpに書き込むと、ページのソースがユーザーに表示されます。ユーザーからソース コードをブロックできますか? これは、このページを 1 人のユーザーにのみ許可する私のコードです。

$aiwab = mysql_query("SELECT * FROM `table`");
while($aiwa = mysql_fetch_array($aiwab)){
$alo = $aiwa['allowed'];
if ($alo == 2 ){

}else{
echo "<script>javascript:history.go(-1)</script>";
}
}

では、ユーザーがソース コードを表示できないようにするにはどうすればよいでしょうか。

4

2 に答える 2

5

JavaScript を使用してユーザーを「ブロック」するのは、率直に言って愚かです。ビューソースの「ハック」で見たのとまったく同じように、javascriptを無効/無視/バイパスできます。クライアントの協力に頼っていては、「セキュリティ」は確立できません。

スクリプトを保護するために、適切なサーバー側認証 ( HTTP 基本認証など) を使用します。

于 2013-07-04T19:36:51.917 に答える
2

これをクライアント側の認証からサーバー側の認証にすばやく変更したい場合は、次の変更を行うことができます。

if ($alo == 2) {

}
else {
    // Redirect them by sending a HTTP Location header
    header("Location: www.yourdomain.com/path/to/another/page");
}

上記のソリューションは、出力がブラウザに送信される前にheader()が呼び出された場合にのみ機能することに注意してください (HTTP ヘッダーは、メッセージの本文が始まる前に送信する必要があります)。これは現在のソリューションと非常によく似た機能を果たしますが、リダイレクトがブラウザではなくサーバー上のコードによって引き起こされるという違いがあります。クライアント側のコードを実行せずにブラウザにページをロードできるため、誰かが認証を回避できます。view-source

これは、クライアント側とサーバー側の認証の違いを説明するのに役立つ簡単な修正です。これが、ちょっとしたコードをいじって学習する以上の目的である場合は、セキュリティについてもっと学ぶべきです。また、使用している mysql 関数は現在非推奨であり、代わりにmysqli、またはpdo

また、クライアント側とサーバー側のコードの使用についても読んで、どのタスクに何を使用し、その理由を理解する必要があります。

于 2013-07-04T19:49:28.973 に答える