2010-06-08 39 views
0

我使用php + jQuery进行验证码验证,稍后发送邮件并执行其他操作。伪代码是这样的:php + jquery + captcha,这是正确的方法吗?

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中移动验证码验证以使其更安全?还有其他更安全的方法吗?

Prashant

+0

如果您使用了预先打包的验证码解决方案,是不是有关如何执行此操作的示例?你正在使用哪个验证码? – 2010-06-08 18:02:05

回答

0

验证码的重要性在于验证发生在服务器上。 这是记住最重要的部分。

1

验证应该在服务器端完成。虽然通过隐晦的安全措施可以对付垃圾邮件机器人,但客户端上的任何内容都是公平的游戏。

而在客户端验证的验证码却失败了。

+0

我正在使用自定义验证码脚本。服务器端是什么意思?我是网络编程新手,请耐心等待。 – user354051 2010-06-08 18:22:15

+0

在服务器端,我的意思是,在这种情况下,PHP处理程序。发送邮件的脚本不应运行,除非提交了有效的验证码响应。 Web开发的第一条规则是:不要相信用户的输入。 如果您在客户端进行验证,使用javascript,那么阻止某人调整代码并将您变成垃圾邮件分发器的做法并不多。 – user358390 2010-06-08 18:30:32

0

您正在验证服务器端的实际验证码,但您正在验证结果并指示在客户端发送邮件。这是错误的。 JavaScript/jQuery在客户端机器上运行,并且可以由最终用户以他/她喜欢的方式修改。最终用户可以例如删除if语句,或者始终评估true并重新执行代码。

在处理表单提交期间,您需要指示在服务器端发送邮件。

+0

好的,如果我在“send_mail_using_php_script”中移动验证码验证会怎么样。我会将在输入中输入的验证码和电子邮件地址传递给脚本。第一个脚本将验证验证码,如果它是正确的,然后发送一封邮件。我认为这两种方式都在服务器端发生。我对么? – user354051 2010-06-08 19:25:22

+0

是的,这是正确的。 – BalusC 2010-06-08 19:37:01

相关问题