我正在开发一款应用程序,需要使用类似于active merchant的东西来接受信用卡付款。就安全性而言,它是否可以在heroku上运行,并使用authorize.net(或类似的)作为支付网关?如果需要存储信用卡号码怎么办? 编辑 不会将用户转发到authorize.net。
简单的回答是“是”,我相信是这样,但除此之外还要看情况。您可以为与第三方服务相关的各种键和其他值设置环境变量(http://docs.heroku.com/config-vars),或者只需检查并部署它们。如果您正在使用authorize.net的托管支付服务,并转发到他们的网站,则不需要自己使用SSL。如果您将托管提交信用卡号码和个人信息的表单,并通过服务器上的其API将其转发给authorize.net,则需要为heroku (http://docs.heroku.com/ssl) 设置SSL,以使您的表单安全。现在,接受信用卡付款并仅将其传递是一件事,保存信用卡号码和其他私人信息是另一件事。除了指向各种安全标准文档(即PCI DSS适用于此处)外,我只会说,除非你绝对必须,否则不要存储信用卡号码和相关的个人信息,只需转发到网关并确保您没有记录这些字段(http://guides.rubyonrails.org/security.html#logging)。如果您确实需要存储信用卡数据,我认为您需要更多地控制数据库和服务器以达到合规,并且我不知道可以使用并实现此目的的通用云主机,如AWS或heroku(也许其他SO用户会纠正我)。但是,使用支付网关如authorize.net可以使您达到目标。我还要指出,不同的州现在有关于存储敏感数据(像马萨诸塞州,我所居住的地方)的法律,因此除非它对您的业务模型至关重要,否则应避免这样做。有一个有点过时但是有关PCI合规性的好一般性讨论,请看这里:http://broadcast.oreilly.com/2009/02/pci-in-the-cloud.html。