7

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

4

5 回答 5

6

您可以在表单上实施验证码:

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

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

于 2010-03-18T13:19:23.387 回答
3

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

它是什么以及它是如何工作的

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

于 2010-03-18T13:39:45.613 回答
3

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

if (strpos('http://', $_POST['message']) !== false) { /* 拒绝 */ }
于 2010-03-18T13:23:25.063 回答
2

有两件事需要考虑哪些应该并行实施(也许还有更多)。

  1. 验证码(如前所述)
  2. 在服务器端验证您的数据!你写你是通过javascript来做到这一点的。这很好,但同样的验证过程应该用 PHP 编写。

好吧,对于 CAPTCHA,无论如何您都必须在服务器端进行验证。但是即使您决定不实施验证码,您也应该在服务器端进行数据验证。

于 2010-03-18T13:23:00.840 回答
0

我建议htmlentities()在插入之前使用该功能。

显然,您的插入也应该使用参数化查询来与数据库交互。验证码当然是一种选择,但它更多地用于限制某人可以发布的频率,而不是他们可以发布的内容。使用 hmtl 转义(同样是htmlentities()函数)来防止用户输入您不想要的内容。

于 2010-03-18T13:46:22.147 回答