我在AWS上的EC2实例上运行了一个R Shiny应用程序。该应用程序可以通过其链接直接访问。
我还在S3上托管了一个Django应用程序,它以iframe的身份访问应用程序。
我想要做的是仅通过Django应用程序限制Shiny App的访问。目前,EC2实例安全组没有限制,他们监听端口80和22。
我有什么想法可以做到这一点?
我希望答案很简单,并说你只需要限制你的Shiny应用程序访问你的Django应用程序的IP,但不幸的是你使用的是iframe。
当您使用iframe时,访问您的Django应用程序的任何人都需要访问该iframe的内容。如果您的Django应用程序需要可以从任何地方访问,那么您的iframe内容需要可以从任何地方访问。
您可以减轻对Shiny应用程序内容的访问权限。您可以使用X-Frame-Options标头来阻止您的Shiny应用程序嵌入其他网站。例如,您可以设置nginx来为您的Shiny应用程序提供服务并设置这些标题。
以下是一些有用的链接:
https://security.stackexchange.com/questions/67889/why-do-browsers-enforce-the-same-origin-security-policy-on-iframes(关于X-Frame-Options)