【发布时间】:2010-03-18 13:16:56
【问题描述】:
我有一个将信息发送到数据库表的表单。我用 Javascript 对其进行了检查,但是当 Javascript 关闭时,阻止垃圾邮件发送者使用 PHP 将 http 等输入数据库的最佳方法是什么?
【问题讨论】:
标签: php spam-prevention
我有一个将信息发送到数据库表的表单。我用 Javascript 对其进行了检查,但是当 Javascript 关闭时,阻止垃圾邮件发送者使用 PHP 将 http 等输入数据库的最佳方法是什么?
【问题讨论】:
标签: php spam-prevention
您可以在表单上实施验证码:
http://en.wikipedia.org/wiki/CAPTCHA
编辑:当然也要像往常一样在服务器端验证表单数据并检查 html 标签等,但 CAPTCHA 应该有助于防止自动垃圾邮件攻击。
【讨论】:
永远不要相信客户。始终验证服务器端的所有数据。用于表单验证的 JavaScript 可能只是一个附加功能。您可以从基本的 PHP 函数开始检查内容是否包含您不喜欢的某些字符串,例如。 “http://”。
if (strpos('http://', $_POST['message']) !== false) { /* 拒绝 */ }【讨论】:
您可以使用CSRF protection 来防止垃圾邮件发送者,我发现它非常有效。
另一种偷偷摸摸的方法是包含一个“蜜罐”字段 - 一个永远不应该与内容一起提交的隐藏字段。如果已填满,您就知道它是垃圾邮件。这些方法都不需要烦人的验证码。
【讨论】:
有两件事需要考虑哪些应该并行实施(也许还有更多)。
好吧,对于 CAPTCHA,无论如何您都必须在服务器端进行验证。但即使你决定不实施验证码,你也应该在服务器端进行数据验证。
【讨论】:
我建议在插入之前使用htmlentities() 函数。
显然您的插入也应该使用parametrized queries 来与数据库交互。验证码当然是一种选择,但它更多地用于限制某人可以发布的频率,而不是限制他们可以发布的内容。使用 hmtl 转义(同样是 htmlentities() 函数)来防止用户输入您不想要的内容。
【讨论】: