我们有一个数据仓库来存储我们产品的价格。每一个工作日一次,就会添加新的数据点,表示每种产品的当天价格。在网站上,用户在页面加载时看到此信息。目前有7种产品;分析表明,每天的页面加载量约为100。
网站服务器是我们数据中心的外部服务器。数据仓库服务器是我们的数据中心的内部,并且有其他关键数据(在不同的表中)不相关,也不应该被网站访问。
考虑了下列办法:
以上哪种方法是最好的,还是有比上面列出的更好的方法?一种方法的利弊是什么?
发布于 2014-01-13 19:15:02
考虑到您的仓库包含额外的数据,而您不希望向其公开新的攻击向量,听起来您的最佳选择是在仓库可以推送到的web服务器上为该数据实现某种基本的缓存层。
您将在您的安全仓库环境中运行某种服务,将所需数据的序列化表示推到您的web服务器上运行的键值存储或类似(redis、memcached等)。这应该比处理CSV文件更直接,也可能更安全。这只是一个数据仓库端的服务知道何时以及如何关闭缓存的问题。
正如您提到的,您没有理由不能使用安全的HTTPS连接连接到web服务器来进行推送。另外,您还可以在传输过程中实现一些基本的加密,以保护数据,尽管听起来您的web服务器需要的数据实际上并不是敏感数据,因此这一步可能会导致过度。
同样,由于您的数据仓库中包含敏感数据,所以我建议您不要尝试构建web服务器可以查询的某种API。这样做并没有本质上的错误,但它确实打开了攻击向量,使得项目看起来更加复杂,因为它听起来不需要做不同类型的查询,您只需要一个特定的数据块。这使得这是一个“单向对话”,在仓库的负担,以确保它的“公共”数据被推开。
如果将来需要查询、更新或以其他方式与来自web服务器的仓库进行“双向对话”,那么明智的做法是在部署本质上“开放”的API端点(S)之前将这些数据从敏感数据中分离出来。
祝好运!
发布于 2014-01-13 19:37:10
在您的选择中,3-公开一个安全的Web服务是最好的。
避免过时(备选方案1)和不必要的危险(备选案文2)选项,有办法确保网络服务的安全。NIST在http://csrc.nist.gov/publications/nistpubs/800-95/SP800-95.pdf上进行了一次非常好的阅读,我建议您在开始之前对它进行彻底的阅读。
在实现这些服务时,您可以提供身份验证和授权机制,通常使用WS-安全套件。( XML节点可以单独加密和签名)。此外,这里还有许多关于保护服务的教程和问题。
至于缺点(请务必在上面的PDF中阅读“WS的安全问题-安全性”,它涵盖了错误设置的缺陷),对其他选项来说,适当安全的WS服务的开发成本相对较高,但是身份验证和授权的好处远远大于它们。
https://security.stackexchange.com/questions/48431
复制相似问题