2011-01-31 12 views
0

iamは、サイト内の私のPHPページの1つにリクエストを送信するためにajaxを使用しています...しかし、これは私のhtmlページから行います。これは安全です....ajaxリクエストをリモートから送信する際のセキュリティ上の問題?

しかし、他の人が自分のPHPページを知っていて、スクリプトからそのページにajaxリクエストを送るとどうなりますか?これによりセキュリティ上の問題が発生する可能性があります。

どうすればこの問題を回避できますか?

+1

あなたは攻撃者が何をするのだろうと恐れていますか? – SLaks

+0

彼は私のソースコードを見るかもしれないと恐れているので、彼はどこでiamがajaxリクエストを送信し、どのパラメータがそのページに渡っているか知ることができます。 これで、彼はGETまたはPOSTを介して私のページにいくつかのパラメータを渡し、INSERT、UPDATE、DELETEなどの不正な操作を実行することができます。 –

答えて

3

あなたはCSRF attacksに対して防衛しようとしているようです。

あなたのページにノンスを含めることができます。そして、すべてのAJAXリクエストにノンスがあることを要求します。
攻撃者は異なるドメインに属しているため、ノンスを取得する方法はありません。

+0

彼はCSRFについて聞いていますか?または彼は彼のPHP受信機に偽のデータを送信するボットについて話している可能性がありますか? +1でも – RobertPitt

+0

@ロバート:わからない。私は彼に明確にするように頼んだ。 – SLaks

+0

+1であり、ボットの問題はこれで実際に対処することができます。あなたがjavascriptで最後のnonceを生成させるようにすると、javascriptを解析しないので、ほとんどのボットはそれを処理できなくなります。ただし、これはバイパスすることができるため、ユーザー自身ではありません。特定のアプリケーションで使用するための良い方法です。 –

1

あなたのページにAJAXリクエストを送信できる唯一の方法は、同じドメインにある場合(つまり、そのスクリプトをあなたのドメインでホストする必要がある場合)です。

AJAXはクロスドメインで動作しないため、非常に安全です。

+0

それ以外のほとんどの言語はそうすることができます:/ – RobertPitt

+0

まあまあ、私は 'file_get_contents(" http://his.url ")'を実行できますが、これはAJAXの質問だと思いました。 – xil3

+0

php(http://php.net/manual/fr/function.file-get-contents.php)を使用して、他のサーバーから簡単にページをリクエストできます。その後、リバースエンジニアリングのビットと、あなたはどのような種類のデータを知っている必要がありますそれぞれのparamが必要です。このようにして、PHPページが提供できるすべてを取得できます。 (私はちょうど欠陥/悪用を指している、私はそのような種類のvunerabilityを避けるためにajaxを行う正しい方法を知らない) –

1

これをやめるために行うことができることはほとんどありませんが、これを防止するのに役立つと思われるのは、優れたアプリケーションアーキテクチャを持つことによるものです。例えば

、次の規則が役立ちます:

  • を読み取り専用にあなたのAjaxを下にしてみてください。あなたはこれらのルールに従うべきで、その後の書き込みにアヤックスを使用する必要がある場合
    • だけのあなたが期待どおりにことを確認し、
    • 検証検証&はあなたのポストのデータを検証しログインしているユーザーがデータを提出することができますそれは
    • は、ユーザーがログインしている場合は赤(Nonce
    • など、有効期間がありますことを確認し、すべてのページ上のすべてのフォームのためのユニークなハッシュを生成フォームのハッシュ技術を実装し、セッション内の変数に対して検証します「30秒待たなければならない投稿する前にonds "。
    • あなたはこれらはこれらの研究をするときに、他のサイトの所有者が使用する他の技術に遭遇しますが、あなたがしなければならない、あなたの方法であなたを取得する必要がありますだけでいくつかのポインタです session_start

を呼び出す前に

  • 常にsession_regenerate_id()を使用常に次の2つのルールを忘れないでください。

    • ちょうどあなたが
    • ホワイトリストとブラックリストを行うことはありませんように行動し、ユーザーを信用しないでください。
  • 関連する問題