Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我是否可以在共享主机上安全地访问Gmail for Rails应用程序,而不会危及凭据?_Ruby On Rails_Security_Oauth_Openid - Fatal编程技术网

Ruby on rails 我是否可以在共享主机上安全地访问Gmail for Rails应用程序,而不会危及凭据?

Ruby on rails 我是否可以在共享主机上安全地访问Gmail for Rails应用程序,而不会危及凭据?,ruby-on-rails,security,oauth,openid,Ruby On Rails,Security,Oauth,Openid,也就是说,我想要一个Rails应用程序,可以让我看到用户Gmail日历的定制视图。但它将在共享主机上运行,因此不希望存储凭据,或将其清除 问题:我是否可以在共享主机上安全地访问Gmail for Rails应用程序,而无需担心凭据的风险?我该怎么做?(例如,OAuth或OpenID是否解决此问题) 所需经费将是: # Get Google Calendar service = GCal4Ruby::Service.new service.authenticate("<google acco

也就是说,我想要一个Rails应用程序,可以让我看到用户Gmail日历的定制视图。但它将在共享主机上运行,因此不希望存储凭据,或将其清除

问题:我是否可以在共享主机上安全地访问Gmail for Rails应用程序,而无需担心凭据的风险?我该怎么做?(例如,OAuth或OpenID是否解决此问题)

所需经费将是:

# Get Google Calendar
service = GCal4Ruby::Service.new
service.authenticate("<google account name>", "<password>")  # <== requires password
cal = GCal4Ruby::Calendar.find(service, "myCalendar")[0]

# Get Google Events
search_str = "<search str>"
@events = GCal4Ruby::Event.find(cal, search_str, params)
  • Rails应用程序将通过API调用Google日历
  • 共享主机站点上未存储任何凭据(例如,在数据库中或其他任何位置)-强制要求
  • Rails站点是非SSL-强制性的(就本问题而言)
  • 在浏览器仍然打开时保持登录的能力-需要(假设使用会话id…假设这是安全的)
例如,我在非SSL rails站点(在共享主机上)上使用的不满足我的要求的退出方法是:

# Get Google Calendar
service = GCal4Ruby::Service.new
service.authenticate("<google account name>", "<password>")  # <== requires password
cal = GCal4Ruby::Calendar.find(service, "myCalendar")[0]

# Get Google Events
search_str = "<search str>"
@events = GCal4Ruby::Event.find(cal, search_str, params)
#获取谷歌日历
service=GCal4Ruby::service.new

service.authenticate(“,”)#如果您试图在
http
页面中包含
https
作为
iframe
加载的谷歌日历视图,则会得到混合内容

如果您只是在进行API调用,只要API调用是从您的服务器到加密的端点,
https://calendar.google.com
或类似的,那么就没有问题了

如果您在浏览器中从非http
页面进行API调用,则确定的攻击者将能够窃听您提供的任何数据,包括发送到浏览器以转发到日历服务的凭据


如果您要向浏览器发送凭据,您还应该担心通过XSS进行过滤。

但这不需要我的rails站点使用SSL吗?是的,我是API调用proposing@Greg,如果您正在从服务器执行API调用,并且从未将凭据发送到客户端,则窃听只是服务器与API之间的连接问题。请确保您连接到API的
https
版本,并且您应该能够防止窃听。谢谢,但是您假设我使用OAuth或OpenID之类的东西,或者让用户通过Google Calendar的身份验证?i、 e.我不清楚用户如何在我的应用程序之前验证Google日历,然后才能为用户请求日历,对其进行按摩,并将其返回给用户user@Greg,你的问题是什么?你想知道如何通过GoogleCalendar进行身份验证吗?我假设如果没有其他方法(这就是我要问的),我的rails代码将需要从用户那里获取“密码”。e、 g.service=GCal4Ruby::service.new,service.authenticate(“,”,”)。但在这种情况下,这破坏了我正在尝试做的事情,即避免将密码传递到我的非SSL rails应用程序。