标签: stateless

为什么说"HTTP是无状态协议"?

HTTP有HTTP Cookie.Cookie允许服务器跟踪用户状态,连接数,最后连接数等.

HTTP具有持久连接(Keep-Alive),其中可以从同一TCP连接发送多个请求.

http stateless

159
推荐指数
7
解决办法
15万
查看次数

使用无状态(=无会话)身份验证时,CSRF令牌是否必要?

当应用程序依赖无状态身份验证(使用HMAC之类的东西)时,是否有必要使用CSRF保护?

例:

  • 我们有一个单页应用程序(否则我们必须在每个链接上附加令牌:<a href="...?token=xyz">...</a>.

  • 用户使用身份验证自己POST /auth.成功验证后,服务器将返回一些令牌.

  • 令牌将通过JavaScript存储在单页面应用程序内的某个变量中.

  • 此令牌将用于访问受限制的URL,例如/admin.

  • 令牌将始终在HTTP标头内传输.

  • 没有Http Session,也没有Cookies.

据我所知,应该(?!)不可能使用跨站点攻击,因为浏览器不会存储令牌,因此它无法自动将其发送到服务器(这就是使用Cookies时会发生的情况/会议).

我错过了什么吗?

authentication csrf stateless csrf-protection single-page-application

114
推荐指数
2
解决办法
5万
查看次数

如何进行无状态(无会话)和无cookie身份验证?

Bob使用Web应用程序来实现某些目标.和:

  • 他的浏览器正在节食,因此它不支持cookie.
  • Web应用程序是一个受欢迎的应用程序,它在特定时刻处理许多用户 - 它必须很好地扩展.只要保持会话会对同时连接的数量施加限制,并且当然会带来不可忽视的性能损失,我们可能希望有一个无会话系统:)

一些重要的说明:

  • 我们有运输安全(HTTPS及其最好的朋友);
  • 在幕后,Web应用程序代表当前用户将大量操作委托给外部服务(这些系统确实将Bob视为其用户之一) - 这意味着我们必须转发Bob的凭据.

现在,我们如何验证Bob(在每个请求上)?哪个是合理的方式来实现这样的事情?

  • 通过HTML表单隐藏字段网球凭证... 包含凭据(用户名和密码),两个球拍分别是浏览器和Web应用程序.换句话说,我们可以通过表单字段而不是通过cookie来回传输数据.在每个Web请求中,浏览器都会发布凭据.虽然,在单页应用程序的情况下,这可能看起来像在橡胶墙上打壁球而不是打网球,因为包含凭证的Web表单可能在网页的整个生命周期(和服务器)中保持活动状态将被配置为不提供凭证).
  • 将用户名和密码存储在页面上下文中 - JavaScript变量等.这里需要单页,恕我直言.
  • 加密的基于令牌的身份验证 在这种情况下,登录操作将导致生成加密的安全令牌(用户名+密码+其他内容).该令牌将被返回给客户端,即将到来的请求将伴随令牌.这有意义吗?我们已经有了HTTPS ...
  • 其他...
  • 不得已:不要这样做,在会话中存储凭据!会议很好.有或没有饼干.

对于任何先前描述的想法,是否存在任何网络/安全问题?例如,

  • 超时 - 我们可以保留时间戳和凭证(时间戳= Bob输入凭证的时间).例如,当NOW - timestamp> threshold时,我们可能会拒绝该请求.
  • 跨站点脚本保护 - 不应该有任何不同,对吧?

非常感谢您花时间阅读本文:)

security authentication stateless cookieless session-cookies

105
推荐指数
1
解决办法
4万
查看次数

无国籍与有状态 - 我可以使用一些具体信息

我对那些在编程中有关于无状态和有状态设计的具体信息的文章很感兴趣.我很感兴趣,因为我想了解更多,但我真的找不到任何关于它的好文章.我已经阅读了几十篇关于网络的文章,这些文章模糊地讨论了这个主题,或者他们谈论的是网络服务器和会话 - 这也是'有状态与无国籍的关系,但我对无状态与编码属性的有状态设计感兴趣.示例:我听说BL-classes在设计上是无状态的,实体类(或者至少我称之为Person(id,name,..))是有状态的等等.

我认为重要的是要知道,因为我相信如果我能理解它,我可以编写更好的代码(例如粒度).

无论如何,真的很短,这就是我所知道的'有状态对无国籍:

有状态(如WinForms):存储数据以供进一步使用,但限制了应用程序的可伸缩性,因为它受CPU或内存限制的限制

无状态(与ASP.NET一样 - 尽管ASP尝试使用ViewStates保持状态):操作完成后,数据将被传输,实例将被传回线程池(Amorphous).

正如您所看到的,它是非常模糊和有限的信息(并且非常关注服务器交互),所以如果您能为我提供更多美味的信息,我将非常感激:)

terminology stateful stateless

87
推荐指数
5
解决办法
12万
查看次数

REST中的OAuth令牌和会话

另一分钟我读了一篇关于OAuth的文章.它特别描述了在一系列请求期间在客户端和服务提供者之间交换的令牌.

文章还提到OAuth在RESTful API中作为授权层获得了极大的普及.据我所知,REST应该完全无状态.

问题:难道这种重复的令牌交换不会破坏REST的"无国籍"原则吗?恕我直言,令牌可以看作是一种会话ID,不是吗?

rest session oauth stateless

40
推荐指数
2
解决办法
2万
查看次数

使用自定义令牌保护REST API(无状态,无UI,无cookie,无基本身份验证,无OAuth,无登录页面)

有很多指南,示例代码显示如何使用Spring Security保护REST API,但大多数都假设一个Web客户端并谈论登录页面,重定向,使用cookie等.甚至可能是一个简单的过滤器,检查HTTP标头中的自定义标记可能就足够了.如何实现以下要求的安全性?有没有任何gist/github项目做同样的事情?我对弹簧安全的了解有限,所以如果有更简单的方法来实现弹簧安全性,请告诉我.

  • REST API由无状态后端通过HTTPS提供服务
  • 客户端可以是网络应用程序,移动应用程序,任何SPA风格的应用程序,第三方API
  • 没有基本身份验证,没有cookie,没有UI(没有JSP/HTML /静态资源),没有重定向,没有OAuth提供者.
  • HTTPS标头上设置的自定义标记
  • 针对外部存储完成的令牌验证(如MemCached/Redis /甚至任何RDBMS)
  • 除了选定的路径(如/ login,/ signup,/ public等)之外,所有API都需要进行身份验证.

我使用Springboot,spring security等.更喜欢使用Java配置的解决方案(没有XML)

rest restful-authentication spring-security stateless spring-boot

37
推荐指数
2
解决办法
3万
查看次数

ReactJS有状态和无状态之间的区别

我试图了解React的有状态和无状态组件之间的确切区别.好吧,无状态组件只是做某事,但没有记住任何事情,而有状态组件可能会做同样的事情,但他们会记住内部的东西this.state.这就是理论.

但现在,检查如何使用代码显示这一点,我有点麻烦有所作为.我是对的,有以下两个例子吗?唯一的区别是getInitialState函数的定义.

无状态组件的示例:

var React = require('react');

var Header = React.createClass({
    render: function() {
        return(
            <img src={'mypicture.png'} />
        );
    }
});

module.exports = Header;
Run Code Online (Sandbox Code Playgroud)

有状态组件的示例:

var React = require('react');

var Header = React.createClass({

    getInitialState: function() {
        return {
            someVariable: "I remember something"
        };
    },

    render: function() {
        return(
            <img src={'mypicture.png'} />
        );
    }
});

module.exports = Header;
Run Code Online (Sandbox Code Playgroud)

components stateful stateless reactjs

31
推荐指数
2
解决办法
3万
查看次数

无状态面向对象编程与功能编程?

如今,越来越多的注意力转向功能性编程的主要原因之一是多线程/处理的兴起以及FP专注于无副作用的无状态计算的优势,使得可扩展性毫不费力.

当然,在面向对象编程中,我们也可以转向无状态范例,其中所有对象永远不会变异状态.这可以是一种约定,或者甚至可能由语言隐式支持.例如,在对象字段和方法之间强制统一访问的语言中,简单地不允许setter方法就可以实现这一点.

那么,我的问题是,由于面向对象可以利用无状态而对于对象强制有状态,OOP是否有效地成为FP的超集?FP的任何其他优点/特性是否使多线程比OOP更实用?

oop functional-programming scalability stateless

30
推荐指数
1
解决办法
5029
查看次数

无状态Web应用程序有哪些好处?

似乎一些Web架构师的目标是拥有一个无状态的Web应用程序.这是否意味着基本上不存储用户会话?或者还有更多吗?

如果只是存储用户会话,那么不这样做有什么好处?

session session-variables session-state stateless

29
推荐指数
2
解决办法
2万
查看次数

无状态会话Bean与Singleton会话Bean

Java EE 6教程说:

要提高性能,您可以选择无状态会话bean,如果它具有以下任何特征:

  • bean的状态没有特定客户端的数据.
  • 在单个方法调用中,bean为所有客户端执行通用任务.例如,您可以使用无状态会话bean发送确认在线订单的电子邮件.
  • bean实现了一个Web服务.

单例会话bean适用于以下情况:

  • 状态需要在整个应用程序中共享.
  • 单个企业bean需要同时由多个线程访问.
  • 应用程序需要企业bean在应用程序启动和关闭时执行任务.
  • bean实现了一个Web服务.

但是如果使用什么:

  • 不需要在整个应用程序中共享状态
  • 单个企业bean可以由多个线程同时访问
  • 不需要执行启动或击落任务

比如说我有一个具有以下界面的登录服务:

public interface LoginService {
  boolean authenticate(String user, String password);
}
Run Code Online (Sandbox Code Playgroud)

它应该用@Singleton或@Stateless注释吗?这一个和另一个有什么好处?如果LoginService需要注入一个EntityManager(可以同时使用),该怎么办?

另外:我正在考虑Spring服务bean的Java EE对应物,它们是无状态单例.如果我理解正确,Java EE对应的是@Stateless会话bean,并且@Singleton Beans用于在启动时配置应用程序或在关机时清理或保存应用程序范围的对象.它是否正确?

java singleton ejb stateless ejb-3.0

27
推荐指数
1
解决办法
2万
查看次数