php+jquery+captcha,这是正确的方法吗?
我使用 php+jQuery 的组合进行验证码验证,然后发送邮件并执行其他操作。伪代码是这样的:
captcha_code = jQuery.post(.....execute captcha script and get status)
if(captcha_code == "correct"){
send_mail_using_php_script;
}
现在我不知道垃圾邮件发送者是否可以直接执行“send_mail_using_php_script”。他们有吗?如果是,那么我是否应该在 send_mail_using_php_script 中移动验证码验证以使其更安全?还有其他更安全的方法吗?
普拉尚特
I am using combination of php+jQuery for captcha validation and later sending mails and do other stuff. The pseudo code is something like this:
captcha_code = jQuery.post(.....execute captcha script and get status)
if(captcha_code == "correct"){
send_mail_using_php_script;
}
Now I have no idea whether spammers can directly execute the "send_mail_using_php_script". Do they? If yes, then shall I move captcha validation in send_mail_using_php_script to make it more safer? Is there any other safer method?
Prashant
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
验证应该在服务器端完成。虽然通过默默无闻的安全性可以很好地抵御垃圾邮件机器人,但客户端上的任何内容都是公平的游戏。
而在客户端“验证”的验证码就达不到目的。
The validation should be done server side. While security through obscurity works ok against spam bots, anything on the client is fair game.
And a captcha "validated" on the client side defeats the purpose.
对于验证码来说,重要的是验证是在服务器上进行的。
这是要记住的最重要的部分。
Important for Captcha is that validation takes place on the server.
That's the most important part to keep in mind.
您在服务器端验证实际的验证码,但在客户端验证结果并指示发送邮件。这是错误的。 JavaScript/jQuery 在客户端计算机上运行,最终用户可以按照他/她喜欢的方式进行修改。例如,最终用户可以删除
if
语句或使其始终评估true
并重新执行代码。您需要在处理表单提交期间指示在服务器端发送邮件。
You're validating the actual captcha at the server side, but you're validating the result and instructing to send the mail in the client side. This is wrong. JavaScript/jQuery runs at the client machine and can be modified by the enduser the way s/he like. The enduser can for instance remove the
if
statement or make it always evaluatetrue
and reexecute the code.You need to instruct to send the mail at the server side, during processing of the form submit.