2012-02-28 9 views
-1

URLを使用して、いくつかの投稿をIDで照会しています。 http://domain.com/page-name/?id=123訪問者がURLをクリックすると、ページが開き、適切な投稿が表示されます。 しかし、もし誰かが望むなら、彼はブラウザでこのURLを入力して投稿を得ることができ、他のIDを知っていれば多くの異なる投稿を得ることさえできます。このようなクエリを拒否するにはどうすればよいですか? ところで、私のサイトは投稿用の埋め込みコードを提供しています。だから、私は他のウェブサイトからのアクセスを可能にする必要があります。直接クエリを拒否する方法は?

+1

それはセッションベースであるならば、あなたはセッション中にページIDを格納することができますし、ページをチェックすることができるかもしれ人々は彼らのウェブサイト上で私のポストを埋め込む場合は、ポストフォームによってセッション – mack

答えて

1
  • 最も簡単な方法は、おそらく$_SERVER['HTTP_REFERER']経由HTTPリファラーをチェックして、訪問者があなたのページのいずれかのリンクをクリックしたことを確認することです。ただし、これにより、ブックマークの種類も制限されます。
  • 別の解決策は、URLパラメータとしてID以外のものを使用することです。彼らは推測するのが難しいでしょう。 idの代わりにMD5-Hashのid + dateまたは何かを使用することができます。 (もちろん、データベースにハッシュを格納する必要があります!)
  • 別の方法があります。主に検索エンジンの最適化に使用されますが、あなたのために働くこともできます。投稿のタイトル(「news_new_blog_software」など)から文字列を生成し、それをデータベースに格納します。次に、mod_rewriteを使用してhttp://domain.tld/post/*のすべての呼び出しをPHPファイルにリダイレクトし、/post/の後の文字列がデータベースに存在するかどうかを確認します。これはMD5ハッシュよりも少し上手かもしれませんが、URL文字列が何度も使用されないようにする必要があります。
  • 本当に安全にしたいのであれば、基本的にはログインの種類を使ってアクセス権を確認する以外の方法はありません。誰もが望むならば、彼は他のIDを知っていれば
+0

使用MD5場合は、私のページが知っているどのようにどのポスト照会するには? – Jenny

+0

私が言ったように...あなたは、データベース内のハッシュを格納する必要があるだろうし、代わりに使用するのでは 'WHERE ID ...' 'あなたはWHEREハッシュ= ...'使用する必要があります。 (あなたはSQLインジェクションを防ぐために、入力をサニタイズを確認してください!)あなたはまた、単にデータベースのハッシュ関数を使用して行うことができます 'WHERE MD5(日| ID)= ...'か何か。可能性の多く。 –

+0

素晴らしい!私は "文字列を生成"ソリューションを試してみます。ありがとう! – Jenny

0

あなたは隠しフィールドにidを渡してポストフォームメソッドを使用できます。

+0

のidは、その後、彼らはあまりにも – Jenny

+0

はそれを暗号化してから送信..あなたはそのためにMD5を使用することができます。他の暗号化機能もあります。.. –

+0

ないことをブロックされています良い解決策。私はこのようなものを「難読化によるセキュリティ」と呼ぶのが好きです。 IDを単に隠すだけで、巧みな人々が自由にすべての単一の投稿を検索することを妨げることはありません。 –

1

しかし、彼は入力このブラウザでURLやポストを得るには、彼も異なるポストの多くを得ることができます。

正確に。これがWorld Wide Webの目的です。

直接クエリを拒否する理由はまったくありません。
実際、技術的な観点からは、あなたのサイトへのすべてのリクエストは「直接」です。

恐らくsome other problem(ほとんどの場合は想像上のもの)を解決しようとしています。あなたがそれを私たちに伝えたいなら、あなたは正しい解決策を得るでしょう。

+1

投稿は独立した著者に属する文書です。共有または共有を拒否することに同意するのは彼らの権利です。ほとんどのものは公開されていますが、一部の著者はサイトを使ってビジネス活動を行っています。 – Jenny

+0

だから、あなたは "直接アクセス"ではなく*無許可のアクセスを制限したいと思っています。あなたはそれを必要とし、許可します。 –

1

あなたは、秘密鍵のいくつかの種類を生成して、リンクのURLに http://domain.com/page-name/?id=123&key=1234567890 このキーを生成するために必要ないくつかの具体的なデータがクッキーに保存されているようなものを、それを追加することができます。

ランダム値+タイムスタンプ+ページIDのmd5ハッシュを使用して、そのランダム値をクッキーに保存することができます。要求を受け取るたびに、リクエストパラメータにキーがあるかどうかをチェックし、ユーザーがクッキーを持っている場合はハッシュを計算し、リクエストのものと比較します。

+0

私はCookieメソッドに慣れていません。私はティルの解決策を最初に試してみます。ありがとう! – Jenny

0

あなたは認可を必要とします。これにより、ユーザーは検索エンジンや他のウェブサイトからあなたのサイトをクリックしてしまうことはありません。

あなたは、なぜ最初にクリックして無料を実装しようとしない、認証/ログインを実装したくない場合は、次のhttp://support.google.com/webmasters/bin/answer.py?hl=en&answer=74536

関連する問題