Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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
Security 基于oauth的身份验证查询_Security_Cookies_Oauth 2.0 - Fatal编程技术网

Security 基于oauth的身份验证查询

Security 基于oauth的身份验证查询,security,cookies,oauth-2.0,Security,Cookies,Oauth 2.0,我有一个使用http托管的现有web应用程序。 对于某些部分,我强制用户使用GoogleOAuth登录并获取他们的电子邮件ID。 然后我将一个cookie设置为6个月,并将其内容设置为一个编码字符串,该字符串由两个变量组成-x和z String x = new BigInteger(130, random).toString(32); String z = new BigInteger(130, random).toString(32); String cookieValue = URLEnco

我有一个使用http托管的现有web应用程序。 对于某些部分,我强制用户使用GoogleOAuth登录并获取他们的电子邮件ID。 然后我将一个cookie设置为6个月,并将其内容设置为一个编码字符串,该字符串由两个变量组成-x和z

String x = new BigInteger(130, random).toString(32);
String z = new BigInteger(130, random).toString(32);
String cookieValue = URLEncoder.encode("z="+z+"&x="+x, "UTF-8");
Cookie cookie = new Cookie("someDomain",cookieValue);
cookie.setHttpOnly(true);   
cookie.setPath("/");
cookie.setMaxAge(6 Months);`  
然后,这些相同的值“x”和“z”根据用户记录存储在数据库中以及用户每次访问时-这些值在cookie和数据库中都会更改


您认为这种方法存在任何安全问题吗?

连接的两个随机值不会比单个随机值y(其中longing=lengthx+lengthz)提供更多的熵/随机性

像这样的系统只能通过安全的HTTPs使用,但即便如此:使用一个有效期为6个月的cookie也不是一种真正安全的方法。最好定期检查相关用户的帐户是否仍然存在于谷歌,例如使用谷歌的刷新令牌

利用Google+Signin的典型web应用程序只需依靠Google来维护SSO会话状态,而不会覆盖其应用程序的SSO会话状态。因此,应用程序将使用仅在浏览器会话期间有效的会话cookie,并使用户再次通过Google Signin进行新会话,由Google确定SSO会话是否仍然存在


将SSO会话外包给Google避免了在应用程序中存储长寿命会话cookie的需要,并提高了整体安全性,同时增加了显式登录的数量,这对于连接到Google+Signin的其他应用程序来说无论如何都会发生。

从使用https开始。