Php 如何拒绝直接查询?

Php 如何拒绝直接查询?,php,Php,我使用一个URL来查询一些帖子的ID。 访问者点击URL,就会打开页面并获得正确的帖子。 然而,如果任何人愿意,他可以在浏览器中输入这个URL并获得帖子,如果他知道其他ID,他甚至可以获得许多不同的帖子。我怎样才能拒绝这种查询? 顺便说一句,我的网站提供了帖子的嵌入代码。所以,我需要启用从其他网站的访问。您可以在隐藏字段中传递id并使用post表单方法 最简单的方法可能是通过$_服务器['HTTP_Referer']检查HTTP Referer,并确保访问者单击了其中一个页面上的链接。然而,这也

我使用一个URL来查询一些帖子的ID。 访问者点击URL,就会打开页面并获得正确的帖子。 然而,如果任何人愿意,他可以在浏览器中输入这个URL并获得帖子,如果他知道其他ID,他甚至可以获得许多不同的帖子。我怎样才能拒绝这种查询?
顺便说一句,我的网站提供了帖子的嵌入代码。所以,我需要启用从其他网站的访问。

您可以在隐藏字段中传递id并使用post表单方法

最简单的方法可能是通过$_服务器['HTTP_Referer']检查HTTP Referer,并确保访问者单击了其中一个页面上的链接。然而,这也将阻止任何类型的书签。 另一个解决方案是使用ID以外的其他内容作为URL参数。这很难猜测。您可以使用id+日期的MD5哈希或其他内容,而不仅仅是id。当然,您必须将哈希存储在数据库中! 在某些页面上,您可以看到另一种方法。它主要用于搜索引擎优化,但也适用于您。从文章的标题生成一个字符串,比如news\u new\u blog\u软件,并将其存储在数据库中。然后使用mod_rewrite重定向的所有调用http://domain.tld/post/*到一个PHP文件,然后在那里检查/post/后面的字符串是否在数据库中。这看起来可能比MD5哈希要好一点,但您必须确保URL字符串不会被多次使用。 如果您想让它真正安全,基本上没有其他方法,只能使用某种登录来检查访问权限。 然而,如果任何人愿意,他可以在浏览器中输入这个URL并获得帖子,如果他知道其他ID,他甚至可以获得许多不同的帖子

确切地这就是万维网的目的。 绝对没有理由拒绝直接查询。 事实上,从技术的角度来看,对你网站的每一个请求都是直接的


你们可能正在试图解决最可能的假想问题。如果您愿意告诉我们,您将得到正确的解决方案。

您可以生成某种密钥并将其附加到链接URL中,例如 http://domain.com/page-name/?id=123&key=1234567890 生成此密钥所需的某些特定数据存储在cookie中


您可以使用随机值+时间戳+页面id的md5散列,将该随机值保存到cookie中。每次收到请求时,您都会检查请求参数中是否存在密钥,用户是否有cookie,然后计算哈希值并将其与请求中的哈希值进行比较。

您需要的是授权,而不是此授权。这将阻止人们通过搜索引擎或其他网站点击你的网站


如果您不想实现授权/登录,那么为什么不尝试实现第一次点击免费:

如果是基于会话的,那么您可能可以在会话中存储页面id,并可以在sessionby post表单中检查页面id,如果人们在他们的网站上嵌入我的帖子,那么,他们会被阻止加密,然后发送。。您可以使用md5来实现这一点。。还有其他加密功能..这不是一个好的解决方案。我喜欢把这种东西叫做模糊安全。简单地隐藏ID不会阻止狡猾的人随意检索每一篇文章。如果使用MD5,我的页面如何知道要查询哪篇文章?正如我所说的…你需要将哈希存储在数据库中,而不是使用WHERE ID。。。您需要使用WHERE hash=。。。。确保对输入进行清理以防止SQL注入!您也可以只使用数据库的哈希函数,并在其中执行md5date | id=。。。或者别的什么。有很多可能性,太好了!我将尝试生成字符串解决方案。谢谢天哪,默默无闻的旧安全仍然存在。这就是为什么我称这个网站为邪恶。它不是在传播知识,而是在传播世界上最糟糕、最蹩脚的做法。@Col.Shrapnel好吧……没有人阻止你不再访问。除非人们提出要求,否则我们的工作不是教育他们如何使用最佳实践。在现实世界中,人们需要解决问题,因此如果他们自己不能解决问题,就会提供帮助。当然,可能存在潜在的概念误解。我完全同意这一点。但是,试图教育每个对世界的错误有小问题的人,对任何人都没有帮助。这就是所谓的帮助。这些帖子是属于独立作者的文件。同意分享或拒绝分享是他们的权利。大多数都是开放内容,但一些作者正在使用该网站来主持他们的商业活动,我从他们那里赚取了一小笔费用,这是对维护该网站的巨大支持。因此,你要限制的不是直接访问,而是未经授权的访问,就像蒂尔所说的那样。那你就需要授权了。我对cookie的方法不太熟悉。我先试试蒂尔的解决方案。谢谢