HTTP有HTTP Cookie.Cookie允许服务器跟踪用户状态,连接数,最后连接数等.
HTTP具有持久连接(Keep-Alive),其中可以从同一TCP连接发送多个请求.
当应用程序依赖无状态身份验证(使用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
Bob使用Web应用程序来实现某些目标.和:
一些重要的说明:
现在,我们如何验证Bob(在每个请求上)?哪个是合理的方式来实现这样的事情?
对于任何先前描述的想法,是否存在任何网络/安全问题?例如,
非常感谢您花时间阅读本文:)
security authentication stateless cookieless session-cookies
我对那些在编程中有关于无状态和有状态设计的具体信息的文章很感兴趣.我很感兴趣,因为我想了解更多,但我真的找不到任何关于它的好文章.我已经阅读了几十篇关于网络的文章,这些文章模糊地讨论了这个主题,或者他们谈论的是网络服务器和会话 - 这也是'有状态与无国籍的关系,但我对无状态与编码属性的有状态设计感兴趣.示例:我听说BL-classes在设计上是无状态的,实体类(或者至少我称之为Person(id,name,..))是有状态的等等.
我认为重要的是要知道,因为我相信如果我能理解它,我可以编写更好的代码(例如粒度).
无论如何,真的很短,这就是我所知道的'有状态对无国籍:
有状态(如WinForms):存储数据以供进一步使用,但限制了应用程序的可伸缩性,因为它受CPU或内存限制的限制
无状态(与ASP.NET一样 - 尽管ASP尝试使用ViewStates保持状态):操作完成后,数据将被传输,实例将被传回线程池(Amorphous).
正如您所看到的,它是非常模糊和有限的信息(并且非常关注服务器交互),所以如果您能为我提供更多美味的信息,我将非常感激:)
另一分钟我读了一篇关于OAuth的文章.它特别描述了在一系列请求期间在客户端和服务提供者之间交换的令牌.
文章还提到OAuth在RESTful API中作为授权层获得了极大的普及.据我所知,REST应该完全无状态.
问题:难道这种重复的令牌交换不会破坏REST的"无国籍"原则吗?恕我直言,令牌可以看作是一种会话ID,不是吗?
有很多指南,示例代码显示如何使用Spring Security保护REST API,但大多数都假设一个Web客户端并谈论登录页面,重定向,使用cookie等.甚至可能是一个简单的过滤器,检查HTTP标头中的自定义标记可能就足够了.如何实现以下要求的安全性?有没有任何gist/github项目做同样的事情?我对弹簧安全的了解有限,所以如果有更简单的方法来实现弹簧安全性,请告诉我.
我使用Springboot,spring security等.更喜欢使用Java配置的解决方案(没有XML)
rest restful-authentication spring-security stateless spring-boot
我试图了解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) 如今,越来越多的注意力转向功能性编程的主要原因之一是多线程/处理的兴起以及FP专注于无副作用的无状态计算的优势,使得可扩展性毫不费力.
当然,在面向对象编程中,我们也可以转向无状态范例,其中所有对象永远不会变异状态.这可以是一种约定,或者甚至可能由语言隐式支持.例如,在对象字段和方法之间强制统一访问的语言中,简单地不允许setter方法就可以实现这一点.
那么,我的问题是,由于面向对象可以利用无状态而对于对象强制有状态,OOP是否有效地成为FP的超集?FP的任何其他优点/特性是否使多线程比OOP更实用?
似乎一些Web架构师的目标是拥有一个无状态的Web应用程序.这是否意味着基本上不存储用户会话?或者还有更多吗?
如果只是存储用户会话,那么不这样做有什么好处?
在Java EE 6教程说:
要提高性能,您可以选择无状态会话bean,如果它具有以下任何特征:
- bean的状态没有特定客户端的数据.
- 在单个方法调用中,bean为所有客户端执行通用任务.例如,您可以使用无状态会话bean发送确认在线订单的电子邮件.
- bean实现了一个Web服务.
单例会话bean适用于以下情况:
- 状态需要在整个应用程序中共享.
- 单个企业bean需要同时由多个线程访问.
- 应用程序需要企业bean在应用程序启动和关闭时执行任务.
- bean实现了一个Web服务.
但是如果使用什么:
比如说我有一个具有以下界面的登录服务:
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用于在启动时配置应用程序或在关机时清理或保存应用程序范围的对象.它是否正确?
stateless ×10
rest ×2
session ×2
stateful ×2
components ×1
cookieless ×1
csrf ×1
ejb ×1
ejb-3.0 ×1
http ×1
java ×1
oauth ×1
oop ×1
reactjs ×1
scalability ×1
security ×1
singleton ×1
spring-boot ×1
terminology ×1