如何阻止垃圾邮件发送者将http输入表单到数据库

时间:2010-03-18 13:16:57

标签: php spam-prevention

我有一个将信息发送到数据库表的表单。我用Javascript检查过但是当Javascript关闭时,什么是阻止垃圾邮件发送者用PHP输入http等数据库的最佳方法?

5 个答案:

答案 0 :(得分:6)

您可以在表单上实施CAPTCHA:

http://en.wikipedia.org/wiki/CAPTCHA

编辑:还要确保在服务器端验证表单数据并像往常一样检查html标记等,但CAPTCHA应该有助于防止自动垃圾邮件攻击。

答案 1 :(得分:3)

永远不要相信客户。始终验证服务器端的所有数据。用于表单验证的JavaScript只是一个附加功能。您可以从基本的PHP函数开始,检查内容是否包含您不喜欢的某些字符串,例如。的 “http://”。

if (strpos('http://', $_POST['message']) !== false) { /* refuse */ }

答案 2 :(得分:3)

您可以使用CSRF protection来阻止垃圾邮件发送者,我发现它非常有效。

What it ishow it works

另一种偷偷摸摸的方法是包含一个“蜜罐”字段 - 一个永远不应该与内容一起提交的隐藏字段。如果它已经填满,你知道它是垃圾邮件。这些方法都不需要烦人的CAPTCHA。

答案 3 :(得分:2)

有两件事需要考虑并行实施(可能还有更多)。

  1. Captcha(如前所述)
  2. 验证服务器端的数据!你写的是用javascript做的。这很好,但完全相同的验证过程应该用PHP编写。
  3. 那么,对于CAPTCHA,无论如何你都必须在服务器端进行验证。但即使您决定不实施验证码,也应该在服务器端进行数据验证。

答案 4 :(得分:0)

我建议您在插入之前使用htmlentities()函数。

显然,您的插入应该使用parametrized queries完成,以便与数据库进行交互。验证码肯定是一种选择,但更多的是限制某人可以发布的频率,而不是他们可以发布的。使用hmtl转义(再次,htmlentities()函数)以防止用户输入您不想要的内容。