我有一个关于JSON Web Token(JWT)的一般问题.
如果通过黑客攻击或物理访问从客户端窃取JWT(例如,它被存储为cookie或应用程序的数据库),它可以用于发送到服务器,服务器将认为它是合法用户.它是否正确?
是否有任何通用或标准的做法来防范这种情况,例如,通过从客户端一起发送设备/浏览器类型或一些参考代码,服务器检查它是否与生成和存储JWT令牌的其他数据相匹配.(但是,我读到标准的做法是不在服务器上存储任何东西.)
请告知我需要实现Java JWT(JJWT),RESTful Java Jersey和Google Web Toolkit.(我一直在阅读这样的文档:[ https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage]).
谢谢!
拥有JWT是身份验证的证明.窃取令牌的攻击者可以冒充用户.
所以,保持令牌安全:
使用TLS频道
根据存储类型添加额外的安全措施.Cookie容易受到CSRF攻击.如果您不需要从javascript访问令牌,请使用HttpOnly.LocalStorage容易受到XSS攻击
在身份验证令牌上设置较短的到期时间,并在令牌过期时需要凭据
黑名单没有用,因为你不知道JWT被盗了.它的使用打破了状态,这是JWT的优势之一
另外可以添加IP令牌,但考虑使用场景,因为它可能在代理后面的移动设备或系统上存在问题