URLを使用して、いくつかの投稿をIDで照会しています。 http://domain.com/page-name/?id=123訪問者がURLをクリックすると、ページが開き、適切な投稿が表示されます。 しかし、もし誰かが望むなら、彼はブラウザでこのURLを入力して投稿を得ることができ、他のIDを知っていれば多くの異なる投稿を得ることさえできます。このようなクエリを拒否するにはどうすればよいですか? ところで、私のサイトは投稿用の埋め込みコードを提供しています。だから、私は他のウェブサイトからのアクセスを可能にする必要があります。直接クエリを拒否する方法は?
答えて
- 最も簡単な方法は、おそらく
$_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を知っていれば
使用MD5場合は、私のページが知っているどのようにどのポスト照会するには? – Jenny
私が言ったように...あなたは、データベース内のハッシュを格納する必要があるだろうし、代わりに使用するのでは 'WHERE ID ...' 'あなたはWHEREハッシュ= ...'使用する必要があります。 (あなたはSQLインジェクションを防ぐために、入力をサニタイズを確認してください!)あなたはまた、単にデータベースのハッシュ関数を使用して行うことができます 'WHERE MD5(日| ID)= ...'か何か。可能性の多く。 –
素晴らしい!私は "文字列を生成"ソリューションを試してみます。ありがとう! – Jenny
あなたは隠しフィールドにidを渡してポストフォームメソッドを使用できます。
のidは、その後、彼らはあまりにも – Jenny
はそれを暗号化してから送信..あなたはそのためにMD5を使用することができます。他の暗号化機能もあります。.. –
ないことをブロックされています良い解決策。私はこのようなものを「難読化によるセキュリティ」と呼ぶのが好きです。 IDを単に隠すだけで、巧みな人々が自由にすべての単一の投稿を検索することを妨げることはありません。 –
しかし、彼は入力このブラウザでURLやポストを得るには、彼も異なるポストの多くを得ることができます。
正確に。これがWorld Wide Webの目的です。
直接クエリを拒否する理由はまったくありません。
実際、技術的な観点からは、あなたのサイトへのすべてのリクエストは「直接」です。
恐らくsome other problem(ほとんどの場合は想像上のもの)を解決しようとしています。あなたがそれを私たちに伝えたいなら、あなたは正しい解決策を得るでしょう。
投稿は独立した著者に属する文書です。共有または共有を拒否することに同意するのは彼らの権利です。ほとんどのものは公開されていますが、一部の著者はサイトを使ってビジネス活動を行っています。 – Jenny
だから、あなたは "直接アクセス"ではなく*無許可のアクセスを制限したいと思っています。あなたはそれを必要とし、許可します。 –
あなたは、秘密鍵のいくつかの種類を生成して、リンクのURLに http://domain.com/page-name/?id=123&key=1234567890
このキーを生成するために必要ないくつかの具体的なデータがクッキーに保存されているようなものを、それを追加することができます。
ランダム値+タイムスタンプ+ページIDのmd5ハッシュを使用して、そのランダム値をクッキーに保存することができます。要求を受け取るたびに、リクエストパラメータにキーがあるかどうかをチェックし、ユーザーがクッキーを持っている場合はハッシュを計算し、リクエストのものと比較します。
私はCookieメソッドに慣れていません。私はティルの解決策を最初に試してみます。ありがとう! – Jenny
あなたは認可を必要とします。これにより、ユーザーは検索エンジンや他のウェブサイトからあなたのサイトをクリックしてしまうことはありません。
あなたは、なぜ最初にクリックして無料を実装しようとしない、認証/ログインを実装したくない場合は、次のhttp://support.google.com/webmasters/bin/answer.py?hl=en&answer=74536
- 1. jspページへの直接アクセスの拒否
- 2. Visual Studio、プログラムファイルに直接コンパイルする最善の方法(アクセス拒否の問題)?
- 3. フォルダへの直接アクセスを拒否する(スルーアプリのみ許可)
- 4. Nettyで着信接続を拒否する方法は?
- 5. 拒否されたjQuery約束を直接返す
- 6. wgetを拒否する方法は?
- 7. ページに直接アクセスすることを拒否する方法、ログインのみでアクセスする
- 8. javascript:Lodashはクエリを拒否します
- 9. Openweather API接続を拒否する
- 10. サービスへの接続を拒否する
- 11. リモートユーザの接続を拒否するhbase
- 12. Ruby Telnet接続を拒否する
- 13. リダイレクトURI - 接続を拒否するローカルホスト
- 14. エラーを拒否(接続が拒否されました)
- 15. Mysql php - イメージを拒否する方法
- 16. QML:ドロップアクションを拒否する方法
- 17. Kubernetes - 接続拒否診断
- 18. 拒否を拒否するフラッシュセキュリティパネル
- 19. Pythonで特定のIPのソケット接続を拒否する方法は?
- 20. TCP接続をデバッグする方法は拒否されましたか?
- 21. xpathクエリを否定する方法は?
- 22. CakePHP:ACLのアクセスを拒否するだけでなく、アクセスを拒否する方法を表示するには
- 23. Rubyでraw MongoDBクエリを直接実行する方法
- 24. 接続がquickstart.clouderaを拒否:8020
- 25. エラー=> "Elasticsearch到達不能:のhttp:// localhostを:9200 /] [マンティコア::のSocketException]は接続が拒否(接続拒否)" のSalesforceと}
- 26. SELinux Unix Socketパーミッションが拒否されました。直し方?
- 27. 文字列と二重入力を拒否する方法は?
- 28. 投稿の外部リクエストを拒否する方法は?
- 29. 春のセキュリティでアクセス拒否ページをリダイレクトする方法は?
- 30. mvコマンドの使用中にパーミッションを拒否する方法は?
それはセッションベースであるならば、あなたはセッション中にページIDを格納することができますし、ページをチェックすることができるかもしれ人々は彼らのウェブサイト上で私のポストを埋め込む場合は、ポストフォームによってセッション – mack