通过(Restful)Webservice发送邮件的安全方式

时间:2017-09-20 07:08:40

标签: java angularjs web-services email

我有一个带Java后端的AngularJS Web应用程序。

现在我想从Angular应用程序中发送邮件。我认为最好的方法是发送帖子或获取请求到Web服务并通过内部smtp服务器将邮件发送给收件人。

但我认为这个概念存在很大的安全问题。当我创建一个web服务调用时,如:/api/mail?mailto=john@doe.com某人可以将链接发送到网络服务,更改收件人并使用此链接开始向其他人发送垃圾邮件。

有人知道这种架构通过网络服务发送邮件的安全方式吗?我必须将收件人传递给邮件服务,因为用户在AngularJS UI中设置了它。

我对任何建议感到高兴。

2 个答案:

答案 0 :(得分:0)

以下是您应该采取的安全措施,以确保您的休息api。  REST Security Cheat Sheet 以下是您应为其余API采取的安全措施列表。

如果您使用 spring-security ,大​​部分内容都将涵盖您。

答案 1 :(得分:0)

使用Mailgun。您可以免费发送10,000封电子邮件,您可以通过Java后端调用API,如下所示:

public static ClientResponse SendSimpleMessage() {
    Client client = Client.create();
    client.addFilter(new HTTPBasicAuthFilter(
        "api","key-3ax6xnjp29jd6fds4gc373sgvjxteol0"));
    WebResource webResource = client.resource(
        "https://api.mailgun.net/v3/samples.mailgun.org/messages");
    MultivaluedMapImpl formData = new MultivaluedMapImpl();
    formData.add("from", "Excited User <excited@samples.mailgun.org>");
    formData.add("to", "john@doe.com");
    formData.add("subject", "Hello");
    formData.add("text", "Testing some Mailgun awesomeness!");
    return webResource.type(MediaType.APPLICATION_FORM_URLENCODED).
        post(ClientResponse.class, formData);
}

这比您的实施更安全。我还会将Angular客户端的电子邮件地址作为POST发送到您的Java后端。