Задать вопрос

Безопасно ли использовать error.customData.csrf при повторном запросе?

Изучив работу кода BX.ajax.runAction, я обнаружил, что при неверном CSRF используется error.customData.csrf:
var csrfProblem = false;
response.errors.forEach(function(error) {
	if (error.code === 'invalid_csrf' && error.customData.csrf){
		BX.message({'bitrix_sessid': error.customData.csrf});
		originalConfig.headers = originalConfig.headers || [];
		originalConfig.headers = originalConfig.headers.filter(function(header) {
			return header && header.name !== 'X-Bitrix-Csrf-Token';
		});
		originalConfig.headers.push({name: 'X-Bitrix-Csrf-Token', value: BX.bitrix_sessid()});
		csrfProblem = true;
	}
});
if (csrfProblem){
	return buildAjaxPromiseToRestoreCsrf(originalConfig, true);
}

Решил повторить:
fetch(name,sessid,data,result,error){
        const formData = new FormData();
        for (const [key,value] of Object.entries(data)){
            formData.append(key,value as any);
        }
        fetch(utils.arrayToUrlParams('/bitrix/services/main/ajax.php',{
		action: 'test.api.test.'+name,
	}),{
            method: 'POST',
            body: formData,
            headers: {
                'X-Requested-With': 'XMLHttpRequest',
		'X-Bitrix-Csrf-Token': sessid
            }
	}).then((response:any)=>response.json()).then((response)=>{
		let csrf = false;
		if(response.status == 'error' && Array.isArray(response.errors)){
			response.errors.forEach((error:any) => {
				if (error.code === 'invalid_csrf' && error.customData.csrf){
					csrf = error.customData.csrf;
				}
			});
		}
		if(csrf){
			this.fetch(name,data,result,error,csrf);
		}else{
			result(response);
		}
	}).catch(error);
    }

При использовании error.customData.csrf не пострадает ли безопасность?
  • Вопрос задан
  • 7 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Графический дизайнер PRO
    15 месяцев
    Далее
  • Нетология
    Фронтенд-разработчик
    11 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы