使用REST webservice上传文件是一个好主意吗?

4

我正在学习使用JAX-RS实现REST,然后我突然产生了这个疑问:

由于Web服务是为不同编程语言编写的互操作客户端提供服务的,并且客户端只需使用URL访问服务功能。那有关上传文件到共享数据库的Web服务呢?

这样做会安全吗?如果Web服务无法控制客户端如何执行验证,该如何避免遭受垃圾邮件攻击而导致超载?上传的方法看起来会更或者少类似于这样:

@Path("/upload/{something}") 
@Consumes("multipart/form-data")
@POST
public void uploadSomething(...) {
//...
}

那么我的疑问是,上传文件是否是REST服务可以安全地执行的好事?

@nobeh 对不起,我不是来自英语国家,我真的不太明白这两个词的区别。我想说的是,如果我们无法控制客户端,只是给他们URL上传,那么我的问题是数据库是否会受到垃圾邮件的影响? - javing
1
我建议使用关注点分离;其中我能够识别的有:(a)防止恶意数据从上传表单中上传或垃圾邮件检测(b)限制用户只能上传特定文件(c)如@aleroot所提到的,允许特定用户使用安全功能进行上传。我想每个问题都有不同的解决方法。除此之外,我认为使用JAX-RS多部分功能也可以很好地工作。 - nobeh
@nobeh 我明白了,所以我可以在 Web 服务端添加一些验证来减少垃圾邮件的机会。我会四处看看,看看哪个决定可能是最好的。谢谢。 - javing
1个回答

5
如果您关心安全访问,为什么不对客户端进行身份验证?您可以实现一个SecurityContext并在Java代码中使用它来访问认证信息。参考此文章可能会有所帮助:this。请注意保留HTML标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接