1

非常にシンプルなコメントシステムの開発に取り組んでいます。問題なく PHP と MySQL を使用してシステムを構築しました。

さて、問題は、このフォームをいくつかの異なるサイトに、さらには同じサイト内の異なる場所に提供する必要があるということです。

現時点では、次のファイルがあります。

  • delivery_comm.php: domain_idと一致する以前のすべてのコメントを選択する

  • ui/deliver_comm.php:以前のファイルの HTML。以前のコメントと、新しいコメントを送信するためのフォーム自体が表示されます。

私たちが念頭に置いているのは、JavaScript と document.write を使用して div とフォームを生成することであり、フォームはサーバーに情報を送り返し、そこで PHP スクリプトによって処理され、データベースに保存されます。

さて、私たちの主な関心事は、スクリプトが含まれているサイトからコメントが本当に来ていることをどのように検証できるかということです。

これを解決するには、XSRF トークンに似たものを作成する必要があることは理解していますが、ロジックの助けがあれば本当にありがたいことは認めざるを得ません。

同様に、フォームには現時点で 2 つの隠し入力があり、1 つは Web サイトを識別するため (domain_id として)、もう 1 つはその Web サイトの特定のセクションを識別するため (file_id として) です

いくつかのアイデア:

この時点で、HTML 内で PHP 変数を使用しているため、情報を配置する iframe を生成するためだけに JavaScript を使用すると便利であることに気付きました。

また、この変更は、XSRF 防止トークンを含めるために必要です。これを行うことで、他のサイトからのコメントを避けることができますか? 私は何かを失っていますか?

4

2 に答える 2

0

最初の JavaScript で document.location を読み取り、リファラーで IP アドレスを公開するサーバーに要求を戻すことができます。IP アドレスとドメイン名が一致する場合は、フォームの html と、すべてのフォーム投稿で使用するシステム生成キーを返信してください。

function get_ip_address() {
    foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key) {
        if (array_key_exists($key, $_SERVER) === true) {
            foreach (explode(',', $_SERVER[$key]) as $ip) {
                if (filter_var($ip, FILTER_VALIDATE_IP) !== false) {
                    return $ip;
                }
            }
        }
    }
}
于 2013-05-25T09:27:09.907 に答える