【发布时间】:2011-08-08 03:51:08
【问题描述】:
我正在创建一个用于公司网站的在线 Java Applet。
小程序本质上是一个动态的在线表单,它会提示用户输入产品的某些重要订单详细信息,然后向位于公司维护的收件箱中的地址发送电子邮件。我在本地测试环境中创建了小程序,但是当我将它移动到测试位置(位于与实际小程序最终运行的同一网络服务器上)时,我收到以下错误(来自 IE 中的 Java 控制台) :
DEBUG: can't get java.home: java.security.AccessControlException:
access denied (java.util.PropertyPermission java.home read)
问题(来自我对该主题所做的一些研究)是公司的网络服务器(运行网站)和邮件服务器(这是电子邮件的最终目的地,也是我的 SMTP 服务器尝试使用 JavaMail API 来发送电子邮件)位于不同的 IP 地址(尽管完全位于同一网络上)。因此,由于此小程序是不受信任(且未签名)的,因此该小程序没有访问 SMTP 服务的安全权限。
我想了几种方法来解决这个问题,但我真的很感谢关于这个问题的一些建议,我是否应该使用带有 JavaMail API 的 Java Servlet 以允许表单发送电子邮件?还是我应该尝试自己签署小程序,从而允许小程序访问公司的 SMTP 服务器?
任何关于此事的 cmets / 建议都会有所帮助,非常感谢。
【问题讨论】:
-
我不会依赖客户端的 SMTP。您永远不知道客户端的防火墙会阻止哪些端口。
-
您不想让表单发送电子邮件。如果小程序在用户本地计算机上运行,那么他们可以对通过您的系统发送电子邮件的能力进行逆向工程。只需签署您的申请,这可能会解决问题。
-
@Daisetsu 我不明白你为什么认为签署应用程序会阻止它被逆向工程。 (此外,安全性出人意料地难以确保正确,因此“仅”签署应用程序可能不是最好的主意(类似地,信任已签署的应用程序)。
-
@Tom,我指的是他提到他认为签名可以解决问题的方式。我并不是在暗示通过签署一个程序来防止它被逆向工程。
标签: java security email servlets