2010-12-27 5 views
0

PHPファイルを作成して、書き込むJavascriptコードでのみロードして実行できる方法はありますか?私は誰かが自分のJSを読めず、自分のブラウザでPHPページを自分の変数でロードし、自分のデータベースに不正な変更を加えることができないことを確認できますか? ご迷惑をおかけして申し訳ございません。JSがPHPだけをロードしていることを確認する方法はありますか?

答えて

5

$_SERVER['HTTP_X_REQUESTED_WITH']が設定されていて、「XMLHttpRequestを」に等しいているかどうかをチェックすることができますが、これは偽造することができ、単にHTTPヘッダーです。

Javascriptは、さまざまな方法で再生できる標準のHTTPリクエストを作成するだけです。 HTTPは非常に簡単なプロトコルであり、信頼できる方法でクライアントを区別することはできません。同一の要求は同一です。あなたは、HTTPの上にあなた自身のユーザー識別と承認のスキームを構築する必要があります、それはプロトコルの一部ではありません。サーバーは、承認されたものと、尋ねられた人ではなく、のルール(あなたが確立したもの)に基づいていないものを決定し、実施する必要があります。

+0

ありがとうございます。あなたが安全であるJS/PHPリクエストとレスポンスモデルを構築する方法を私に示してくれることを偶然何か指摘できますか? – dshipper

+0

@dshipper「公開API」の場合、それを実際に保護する方法はありません。ユーザーログインが必要でセッションクッキー(すべてのAJAXリクエストとともに送信される)を使用している場合は、これを使用して特定のユーザーを特定し、このユーザーが特定のことを行う権限を持っているかどうかを判断できます。ユーザー=すべての要求に対して1つのセキュリティルール=承認なし。あなたの状況についての詳細を含む新しい質問を開いて、より多くの提案を得ることをお勧めします。 – deceze

+0

もう一度ありがとう! – dshipper

0

PHPファイルを作成して、私が書いたJavaScriptコードでしか読み込みできないようにする方法はありますか?

確かに、どの要求もクライアント側で偽造することができます。この方法はセキュリティを確立するためには受け入れられません。サーバー側で何らかの認証を使用する必要があります。

0

いいえいいえ。たとえば10行のプログラムを書き込むのは簡単です。 Python、任意のユーザーエージェントを偽装する。どのような状況でもユーザーがあなたに送信するものは、これまで信用できません。

これを行うと、あなたの家族全員、あなたのすべての祖先に恥をもたらし、あなたの子孫を「その男」の子孫として永遠に非難することになります。

-2

Javascriptによって送信されたリクエストヘッダーを確認することができます。 AJAXコールでは、次の行を送信する必要があります。

X-Requested-With: XMLHttpRequest 
+1

JavaScriptはデフォルトでこのヘッダーを送信しません。特定のJavaScriptライブラリ/フレームワークのみがAjax実装で動作します。 – BoltClock

+1

それは安全ではありません、-1。 OPはセキュリティ目的でこれを使用することを明示しています –

関連する問題