只允许通过链接点击查看网页

时间:2011-09-20 05:06:57

标签: php html hyperlink web

如果按下指向它的链接,是否只允许查看网页?我正在向我的组织成员发送电子邮件,其中包含将值附加到URL的链接,因此我可以使用phps $ _GET来确定他们在网页上的身份并进行适当更新。我担心的是个人更改链接的值并更改其他成员数据。如果有更好的方法可以做到这一点,我很满意。使用登录系统不是一种选择。

4 个答案:

答案 0 :(得分:2)

不完全没有。

您可以做的是包含一些与特定用户ID相关联的令牌并且很难猜测,并且也包含在链接中 - 然后,当您收到GET请求时,您需要检查以确保令牌与您知道对该用户ID正确的令牌匹配。 (发送电子邮件时,您可以在数据库中本地存储“正确”的令牌。)

例如,你可能有......

/modify_info_script?user_id=123&token=aSDqWEqwejk2123salskq

然后你会有一个数据库表或其他存储器......

user_id          token
----------------------
...              ...
122              klqwkejajwie8u8213nak
123              aSDqWEqwejk2123salskq
...              ...

因此,如果有人试图更改URL中的user_id,则令牌将不匹配,您可以拒绝他们的请求。例如,这会被拒绝......

/modify_info_script?user_id=122&token=aSDqWEqwejk2123salskq

因为122的正确令牌是klqwkejajwie8u8213nak,而不是aSDqWEqwejk2123salskq

如果不能使用登录系统,这可能是最好的选择。但是,您应该确保使用登录系统根本不是一个选项,因为用户数据 应该通过登录来保护

答案 1 :(得分:0)

这实际上不是保护您网站的正确方法。

但是,简单的解决方法是检查“referer”标题并确保它不是空白。如果它不是空白,那么它来自点击(或者它们欺骗了它,这就是为什么这不安全)。

保护数据的真正方法是使用一组权限实现登录系统。

答案 2 :(得分:0)

要检查是否有人来自某个链接,请参阅$ _SERVER ['HTTP_REFERER']。

为了保护应用程序免受链接操作,您可以将其与秘密密码结合使用(仅在内部,任何人都不能知道密码)并在结果上使用md5()。将MD5附加到网址。如果有人操纵网址,你会知道,因为“网址加上你的密码减去MD5”的MD5会有所不同。

答案 3 :(得分:0)

相当多的密码重置系统都是这样工作的,所以如果你使用足够长的随机令牌,你可以说它是相当安全的。像32个字符这样的东西应该没问题。

提供令牌应该足够了,因为您不需要用户ID来检查数据库中已发布的令牌。

/modify_info_script?token=aSDqWEqwejk2123salskqfilltill32chars

另一种选择是使用登录系统,使用必须输入凭据才能更改信息。

此外,如果您真的担心有人可能会尝试猜测它,只需在3次错误令牌尝试后暂停/禁止用户。无论如何,没有人应该试图用手工输入它们。