我正在使用连接到快速后端的react前端来建立电子商务商店。我想要一种保持状态的方法,以便可以跟踪当前用户及其购物车,因此我在应用程序中实现了cookie。但是经过一番思考,我决定改用本地存储,因为不需要将存储的任何信息发送到服务器。不使用cookie会带来任何安全漏洞吗?或者仅使用本地存储就可以吗?
但是经过一番思考,我决定改用本地存储,因为正在存储的信息都不需要发送到服务器。
您以完全正确的方式做出了此决定!
除了易于使用之外,本地存储更加安全,高效,因为您不会在每个请求中发送额外的数据。
[仅在您要标识会话时才需要Cookie。如今,由于很多站点都在客户端运行,并且只有API调用是动态的,因此对Cookie的需求越来越少。
您的主要关注点应该是XSS(跨站点脚本)攻击。如果您在React应用程序中的任何地方使用以下内容:
<div dangerouslySetInnerHTML={{__html: title}}></div>
[title
的值是您从服务器加载的,那么您可能有插入一个可以访问localStorage内容的标记的风险。
您可以阅读有关XSS漏洞here的更多信息。
编辑:例如,假设您要从数据库中加载用户的用户名,然后将其显示在前端。返回用户名之前,应确保从数据库加载的值仅包含允许用于用户名的值(在这种情况下,假设字母和空格)。您可以使用正则表达式和.match()
函数来检查用户名是否仅包含允许的字符:
if(username.match(/[A-Za-z ]+/)) {
// all good!
} else {
// there was an invalid character
}