首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单页web应用程序与认证

问单页web应用程序与认证
EN

Stack Overflow用户
提问于 2014-04-02 07:36:17
回答 2查看 1.1K关注 0票数 0

这是设置,我想建立一个单一网页的网页应用,省道和角省道是我的前端工具。

对于服务器后端,我使用PHP,认为它只是web应用程序的CDN,而REST用于数据服务这个web应用程序。

我需要构建一些登录和身份验证,我已经确定了Openid,以使注册和登录尽可能容易。在过去的几天里,我一直在网上和这个论坛上寻找一个有意义的解决方案,现在我更困惑了:)

我可以在客户端和服务器端获得基本的auth信息,使用“X”示例登录,验证用户身份,我可以创建/注册他们的服务器端,在那里都很酷。

我现在的问题是,如何在web应用程序和服务器之间以最安全、最有效的方式使用这些信息?以下是我的想法/选择:

  1. 我是否只是在服务器上创建一个会话,当web应用程序对数据进行ajax调用时,它们仍然在应答前登录?
  2. 对于真正的ajax api,我理解对每个调用进行验证更好,如何从客户端进行RESTful调用?我是否在登录时将某些东西(即令牌)传递给客户端,以发送每个呼叫,我将如何做到这一点?
  3. 在发送数据之前,我会以相反的方式来获取客户端的详细信息并将服务器端传递给他们进行验证吗?

我主要是一个桌面开发人员,所以这一切都是有点压倒性目前,任何建议,我应该采取的方式,将非常感谢。一个简单的一步一步的过程描述给我一些方向将是伟大的,谢谢。

米克。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-02 10:13:03

这可能是一个解决方案(我不是专家,但我正在考虑使用这个):

一个新的哈希密码被存储到数据库

用户创建一个密码,新密码以哈希模式存储到数据库中(使用dart,您可以在服务器端使用--例如这个包:哈希尔,必须有类似的php包)。

验证登录并使用过期时间创建会话信息

当用户登录并提供密码时,将给定的密码与存储的密码进行比较(使用以前软件包中的函数)。如果密码匹配,则在服务器端创建数据库的新条目或创建会话cookie。新条目应该具有唯一的id和过期时间(例如,30分钟)。id被发送回客户端。客户端存储id。

验证每个请求并更新过期时间

当客户端发出请求时,它还将id发送回服务器。服务器对数据库中的id条目验证接收到的id。如果id匹配,则将数据库中id的过期时间恢复到30分钟,并回复请求。

用户注销,或者有很长的不活动时间。

当用户注销时,带有id的注销请求被发送到服务器,服务器从数据库中删除id。如果不活动时间超过30分钟,服务器将自动删除会话id。

未授权请求

如果来自客户端的请求不包括会话id,或者从数据库中找不到id,服务器就会向客户机发送一个回复,请求重定向到登录页面,或者发送登录页面(取决于应用程序的构建方式)。

主要的安全措施是:

  1. 不要将密码存储为文本。
  2. 不要将散列密码与每个请求一起发送,而是使用与会话相关的id进行连续传输。
  3. 自动过期与会话相关的id。
  4. 将每个未经授权的请求重定向到公共页面。
票数 0
EN

Stack Overflow用户

发布于 2014-04-02 07:49:37

通常,当客户端成功通过身份验证时,您将在服务器上创建会话cookie。客户端必须将此会话cookie与每个请求一起发送到服务器。

我自己也没有使用过PHP,但我确信有现成的软件包可供PHP使用。

安全既棘手又容易出错,所以你不应该自己动手烤东西。

客户机上不应该做任何事情,因为默认情况下,浏览器会将cookie发送回服务器,每个请求都是这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22804559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档