我有一个将信息发送到数据库表的表单。我用Javascript检查过但是当Javascript关闭时,什么是阻止垃圾邮件发送者用PHP输入http等数据库的最佳方法?
答案 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来阻止垃圾邮件发送者,我发现它非常有效。
另一种偷偷摸摸的方法是包含一个“蜜罐”字段 - 一个永远不应该与内容一起提交的隐藏字段。如果它已经填满,你知道它是垃圾邮件。这些方法都不需要烦人的CAPTCHA。
答案 3 :(得分:2)
有两件事需要考虑并行实施(可能还有更多)。
那么,对于CAPTCHA,无论如何你都必须在服务器端进行验证。但即使您决定不实施验证码,也应该在服务器端进行数据验证。
答案 4 :(得分:0)
我建议您在插入之前使用htmlentities()
函数。
显然,您的插入应该使用parametrized queries完成,以便与数据库进行交互。验证码肯定是一种选择,但更多的是限制某人可以发布的频率,而不是他们可以发布的。使用hmtl转义(再次,htmlentities()
函数)以防止用户输入您不想要的内容。