使用JavaScript发送电子邮件时的服务器端验证?

使用JavaScript发送电子邮件时的服务器端验证?,javascript,validation,email,client-side,server-side,Javascript,Validation,Email,Client Side,Server Side,在我的网站上,我使用Angular和$http对象发送电子邮件。这只是一个简单的联系方式。我验证电子邮件并确保必填字段已用简单正则表达式填充 即使使用服务器端语言,据我所知,仍然没有真正的方法来验证电子邮件。(请参阅。)我能做的最多就是应用相同的基本正则表达式 由于我使用客户端脚本发送电子邮件(我甚至不支持禁用JS的人。这是一个很好的讨论。)并且除非用户启用了JavaScript,否则电子邮件不会发送,是否真的需要在服务器端验证 当您需要使用服务器端验证时,是否有一般的经验法则 因为我用客户端脚

在我的网站上,我使用Angular和
$http
对象发送电子邮件。这只是一个简单的联系方式。我验证电子邮件并确保必填字段已用简单正则表达式填充

即使使用服务器端语言,据我所知,仍然没有真正的方法来验证电子邮件。(请参阅。)我能做的最多就是应用相同的基本正则表达式

由于我使用客户端脚本发送电子邮件(我甚至不支持禁用JS的人。这是一个很好的讨论。)并且除非用户启用了JavaScript,否则电子邮件不会发送,是否真的需要在服务器端验证

当您需要使用服务器端验证时,是否有一般的经验法则

因为我用客户端脚本发送电子邮件…真的需要在服务器端验证吗

您无法控制人们向您的服务器发送HTTP请求的内容

虽然他们不能简单地提交表单以获得预期的结果(也就是说,由于JS可能会由于许多原因而失败,而不仅仅是在客户端被禁用),但他们仍然可以读取您的代码和/或使用浏览器工具来确定您的Web服务的API。有了这些信息,构建一个客户端来向它发送任何他们喜欢的数据(包括恶意数据)是很简单的

当您需要使用服务器端验证时,是否有一般的经验法则


对。您总是需要服务器端验证。客户端验证只是为了方便访问者(更快/更好的UI)

JavaScriptMVC框架的发展已经相当成熟,我不认为我们会回到使用纯PHP或Rails,因为它们需要重新加载来发送或接收数据。如果我没弄错的话,不引人注目的JavaScript是基于浏览器是无投诉的,这在库中已经不常见了。我的大部分业务是推销响应迅速的单页应用程序。这是错误的方向吗?我确实理解服务器端验证的必要性,但是否有方法确认请求是我,而不是有人向我的后端发送请求?“这是错误的方向吗?”-主观。“是否有方法确认请求是我,而不是有人向我的后端发送请求?”-否。请求始终来自浏览器。浏览器不在您的控制之下。请求从未来自您。对,但根据我对您答案的理解,我需要服务器端验证,因为有人可以从任何脚本编写http请求,并将一些数据发送到我的邮件脚本。但由于我使用JavaScript发送JSON数据,这些数据会变成电子邮件,因此任何人都可以在我的源代码中看到表单的任何要求。这使得服务器端验证在这两方面都毫无用处。不,服务器端验证确保数据确实符合您试图在客户端验证中施加的数据格式约束。它还允许您施加额外的限制,例如限制从给定IP地址接受的请求数量(使系统更难充斥电子邮件)。