39

私のプロジェクトでは、他の人が自分のスクリプトに ajax リクエストを送信できるようにする必要があります。そのため、外部リクエストは、他の Web サイトやドメインから、またはブラウザ拡張機能から来る可能性があります。
スクリプトの先頭に次の2行を追加して、スクリプトを実行できるようにしました。

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');  

今私の質問はこれです:私が見逃したセキュリティ上の考慮事項はありますか?この単純な解決策は深刻な問題を引き起こしますか?
もしそうなら、より良い解決策は何ですか?

返信ありがとうございます。

4

4 に答える 4

19

前述のように、誰でもいつでもページにリクエストを送信できます。そのため、必要なセキュリティ上の主な懸念事項は、ユーザー入力を検証し、一般に公開されている情報のみを公開することです。しかし、それはすべてのスクリプトに当てはまります。

(ユーザー入力の検証後に) 集中する必要がある 2 つの主な問題は次のとおりです。

  1. 発生する可能性のある問題は、ユーザーがスクリプトに情報を受け取ることです。ブラウザーに応じて (同じブラウザーのフレーバー間でも)、情報の取得を妨げるさまざまなセキュリティ ルールがあります。これに対する一般的な解決策は、クライアントが実行できる関数呼び出しとして戻り値をラップする「JSONP」として情報を返すことです。簡単な例を次に示します ( http://www.geekality.net/2010/06/27/php-how-to-easily-provide-json-and-jsonp/から取得)。さらにロックダウンするには、すべてのクエリが JSONP であることを主張し、コールバック関数を送信しない人を拒否できます。

.

<?php

header('content-type: application/json; charset=utf-8');
$data = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
echo $_GET['callback'] . '('.json_encode($data).')';

?>
  1. 定期的に電話をかけすぎて、あなたのサービスを悪用している誰か。これに対する解決策は、IP アドレスをトラップし、IP アドレスからの呼び出しが多すぎる場合は拒否することです。絶対確実ではありませんが、それは始まりです。

留意すべきその他の要因:

  • スクリプトによって設定された Cookie やその他のヘッダーはおそらく無視されます
  • セッションも同様
于 2012-11-15T00:07:57.947 に答える
1

zerkms が言ったように、彼らがあなたの php ページに「行く」だけで、それがエコーアウトするものは何でも見ることができます。 可能であれば(確かではありません)、不要な人がローカルホストでも独自のフォームを作成し、AJAX 経由で送信して、必要な応答を取得することもできます..それでよろしければ、情報があいまいです/無害...それなら「安全」だと思います。機密情報を取得/転送する方法は不適切です

于 2012-11-14T23:13:10.623 に答える