我在网上找到有关xss和csrf https://www.redotheweb.com/2015/11/09/api-security.html的文章,当您一直向下滚动到“解决方案”时,它会告诉您使用令牌和会话cookie。在此下方有一段示例代码。我的问题是,当发生xss攻击时,所谓的黑客可能只运行了这段代码。从本地存储中检索令牌,cookie将自动附加。还是我错过了什么?
authenticate(login, password)
.then(function(authentication) {
window.sessionStorage.setItem('token', authentication.token); // store token
})
.then(getAccounts)
.then(function(accounts) {
// display the accounts page
// ...
})
.catch(function(error) {
// display error message in the login form
// ...
});
/**
* @return {Promise}
*/
function getAccounts() {
return fetch('https://api.bobank.com/accounts', {
headers: {
'Authorization': 'Token ' + window.sessionStorage.getItem('token'), // <= include token
'Content-Type': 'application/json; charset=utf-8',
'Accept': 'application/json',
},
credentials: 'include' // <= include session cookie
}).then(function(response) {
return response.json();
})
}
我的具体问题是这篇文章是否错误。并有解决此问题的安全方法。
答案 0 :(得分:0)
是的,XSS攻击通常可以执行其余代码所能做的任何事情。一个普遍的误解是认为XSS需要窃取令牌或会话cookie才能成功。如果您容易受到XSS的攻击,那么XSS可以(如您所指出的)简单地执行相同的代码,从而实现CSRF。