通过在Web应用程序中使用散列用户ID来防止垃圾邮件发送者

时间:2011-11-29 13:31:32

标签: php web unique-id user-identification

我正在构建一个允许用户向其他用户发送消息的Web应用程序。在发送消息页面上,我当前在URL中具有接收者的用户ID,因此应用程序知道在何处发送消息,即example.com/send-message/user-id/1。用户标识是用于标识数据库中接收方的主键

我担心垃圾邮件发送者可以访问此页面,并且只是不断更改网站中的用户ID和网站上的垃圾邮件人员。

我提出的解决方案是创建一个很长的唯一ID(123154123412)。此号码将存储在用户数据库行中,并将用于代替发送邮件页面上的主键,以便垃圾邮件发送者无法通过更改ID轻松地向许多人发送垃圾邮件。

这种方法是否有任何潜在的问题,我可能已经看过了?

如果我要在整个网站中使用唯一ID,那么它会显着减慢网站速度。换句话说,使用主键搜索数据库比生成唯一ID更快。

由于

3 个答案:

答案 0 :(得分:1)

您可以做的另一件事是在短时间内发送过多消息时暂时阻止会话或IP地址(例如,消息之间为1分钟,每15分钟最多5封消息)。

答案 1 :(得分:0)

这种做法绝对没用。

只要您网站的用户允许向其他用户发送邮件,垃圾邮件发送者就会使用您发明的任何内容。

唯一的方法是限制每小时收件人和/或邮件的数量。

答案 2 :(得分:-1)

我认为允许人们在网站上任意传递其他成员通常是一个坏主意(除非这是我认为的网站的重点)。您可能会阻止自动垃圾邮件机器人,但有很多人愿意支付实际人员来手动发送邮件。首先,您应该只允许登录的成员向以某种方式“接受”该成员的其他人发送消息 - 朋友,允许来自等等的消息。

就使用长UID而言,只要您正确设置了数据库,唯一的性能“命中”可能是在您生成它时,但如果您使用它来代替它,它不会减慢您的网站速度主键ID。