我有一个Rails网站,它接收POSTed数据并将其保存到名为“create”的控制器操作中的数据库中。在我的控制器中,我指定了
protect_from_forgery :except => :create
因为Rails网站将从外部应用程序接收此POSTed数据(Raspberry Pi通过python发送POSTed数据)。
这个设置运行良好,但我知道如果他们知道Rails url和参数,而不仅仅是我的Raspberry Pi,我已经向任何能够将数据保存到我的数据库的人开放。
无论如何我可以验证POST请求,所以我的Rails应用程序只保存来自我的Raspberry Pi的数据吗?
我唯一能想到的是添加一个从Raspberry Pi传递的“秘密”值,并在将任何数据保存到数据库之前在我的Rails控制器中进行检查。感谢。
答案 0 :(得分:1)
秘密将是一个合适的解决方案。您有多种方法可以实现这个秘密:
如果通过HTTPS或通过专用安全网络进行通信,前2个仅是安全的。
根据具体情况,您可能还会考虑其他一些选项,例如仅在localhost上侦听,以及在两台服务器之间打开ssh隧道进行呼叫。