0

ユーザーが自分のサイトにメッセージ、質問、またはディスカッションを投稿できるようにする簡単なスクリプトを作成しました。まだ何もオンラインになっていないのでお見せできませんが、登録したくないのは登録です。

私は、誰もが私のサイトにアクセスしてメッセージを投稿し、他の人が(登録なしでも)応答できるようにするための、シンプルで合理化された迅速な方法を望んでいます。

私の質問はセキュリティについてです。次の条件が満たされた場合にのみ、人が自分のメッセージを編集できるようにしました。

  1. IPアドレス($_SERVER['REMOTE_ADDR'])は、質問に使用したものと一致します(データベースに保存します)。
  2. 20分以内に経過しました。

これがどれほど簡単に壊れるか、そしてどうすればそれを強くすることができるかを知りたいです。私はセキュリティに関してはまったくの初心者であり、開発のこの側面にはあまり関心がなく、クライアント/サーバー開発者ですが、私の強みはJavaScriptです。

私もネットワーキングについてあまり手がかりがありません。IPアドレスをスプーフィングするのはどれほど簡単ですか?また、同じアドレスを持つ2人のユーザーを見つけるのはどれほど一般的ですか?編集を行うために存在しなければならない3番目の句として一時データベースに保存されるセッションIDを作成することを考えています。もちろん、これはユーザーがサイトを離れて編集に戻ることができないことを意味します。

誰かが私に進むための最良の方法についてアドバイスをくれますか?

注:登録は絶対に必要ないことを明確にしておきます。これにより、この問題が完全に解消されます。誰でも簡単に利用できる、無料で利用できる公開サイトが欲しいです。

注2:ユーザーがサイトを操作する必要がある単純なJavaScript(CAPTCHAよりも高速)でボットの問題にも対処したので、ここでは心配する必要はありません。

敬具。

4

4 に答える 4

2

私見では:

同じルーターに接続された2台のコンピューターを使用している2人のユーザーは、PHPスクリプトの観点から2人が同じ外部IPを持っているため、チェックに失敗します。

 __________         __________
| ________ |       | ________ |
||        ||       ||        ||
||________||       ||________||
|__________|       |__________|
     /\                 /\
    ----               ----
192.168.1.101      192.168.1.102

      |                 |
       \               /
        \             /
         \           /
          \         /
           \       /
            \     /
         ____________
        |            |   137.204.xxx.xxx <- This is what you see in your script
        |   ROUTER   |  -----------------  Internet
        |____________|

しかし、多くのスパマーがあなたのサイトにやってくると、私はもっと心配します...あなたは何が起こるか知っています。

PSスパマーは必要なボットではありません。多くの人間が実際にその仕事をするために報酬を受け取っています。

于 2012-10-18T16:44:26.053 に答える
1

あなたのアプローチが正しいことを確認してください、そしてあなたはそれをクッキーと組み合わせて同じIP上の複数のユーザーの問題を避けることができます(もちろんあなたのサイトでこれを述べてください)。

于 2012-10-18T16:43:42.553 に答える
1

IPアドレスのなりすましは非常に簡単ですが、それが大きな問題になるとは思いません。

問題は、複数のユーザーが同じルーターの背後にいる場合、同じ外部IPアドレスから投稿する可能性があることです。兄と私が同じフォーラムにサインアップしたとき、私はその問題を抱えていました。同じ大学に通う人がIPを禁止されたときに、SO自体に問題があると聞いたことがあります。

最善の策は、を介してCookieを作成し、$_SESSION個々のユーザーを追跡できるようにすることです。

于 2012-10-18T16:44:39.750 に答える
1

これを処理するためのより良い方法は、一意のセッションIDを生成し、それを一定期間(この場合は20分)保存することだと思います。($_SERVER['REMOTE_ADDR'])同じルーターに多数のコンピューターが接続されていて、実際にルーターのIPアドレスが返される場合、このアプローチは機能しません。また、これが失敗する可能性のある別の状況として、ルーターがIPアドレスをホップした場合、その人は自分の投稿を編集できなくなります。私はこれが非常にありそうもない状況であることを認めます、しかしねえ、あなたは決して知りません。

さまざまな方法で一意のセッションIDを生成できます。1つの方法は

session_start()
if (!isset($_SESSION['uniqueID'])){
   $_SESSION['uniqeID'] = uniqid(mt_rand(), true);
}

すべての一意のIDをサーバーに20分間保存でき、ユーザーが何かをしたい場合は、このリストと照合できます。これはかなり複雑な方法です。あなたはただクッキーを使うことができます。また、一定期間、1人あたりの投稿数を制限することをお勧めします。そうでなければ、スパマーはあなたのポストボードに大混乱をもたらすでしょう。

于 2012-10-18T16:50:31.483 に答える