LINUX.ORG.RU

Неправильный код защиты CSRF


2

3

Добрый день, решил я пойти по форумам и поискать тред от модератора, который интересовался по поводу водки. У меня есть волшебный скрипт, который показывает всё, что скрыто. Но он почему-то перестал работать.

Доступ запрещен. Причина: Неправильный код защиты CSRF. Возможно сессия устарела

Что это такое?! и как это исправить.

сам скрипт:

// License: Public domain.
// ==UserScript==
// @name LOR HideAll
// @description Показать удаленные темы и сообщения.
// @author Linux.org.ru
// @license Creative Commons Attribution 3.0 Unported
// @include http://www.linux.org.ru/forum/*
// ==/UserScript==

(function ()
{
   function calc_offset()
   {
      var idx = document.location.search.search(/[?&]offset=(\d+)/);
      if (idx == -1) return 0;
      return RegExp.$1;
   }
   function load_handler()
   {
      // Wrapper.
      var button_block = document.createElement("div");
      button_block.style = "position: absolute; top: .5em; left: 0;";
      // Form.
      var form = document.createElement("form");
      form.method = "POST";
      var e;
      // Show deleted.
      e = document.createElement("input");
      e.type = "hidden"; e.name = "deleted"; e.value = 1;
      form.appendChild(e);
      // Submit button.
      e = document.createElement("input");
      e.type = "submit"; e.value = "Показать всё, что скрыто";
      form.appendChild(e);
      // Append to document.
      button_block.appendChild(form);
      document.body.appendChild(button_block);
   }
   document.addEventListener("DOMContentLoaded", load_handler, false);
})();

Где и что нужно поправить?! Спасибо.

Тоже заметил.

Кстати, такое уже было с тредами, но список смотреть можно было.

anonymousss ★★ ()

а что, посомтреть исходники не можете? там дополнительный параметр с csrf его надо воспользовать к себе в формочку

hizel ★★★★★ ()

После var e; добавь это:

      // CSRF.
      e = document.createElement("input");
      e.type = "hidden"; e.name = "csrf"; e.value = "N/FZPvBavoB7qGF3O8gd4Q==";
      form.appendChild(e);
УМВР.

anonymousss ★★ ()
Ответ на: комментарий от anonymousss

А откуда его брать?

а уже из существующей формы нельзя?

Я с этим первый раз сталкиваюсь

man csrf

hizel ★★★★★ ()
// License: Public domain.
// ==UserScript==
// @name LOR HideAll
// @description Показать удаленные темы и сообщения.
// @author Linux.org.ru
// @license Creative Commons Attribution 3.0 Unported
// @include http://www.linux.org.ru/forum/*
// @include https://www.linux.org.ru/forum/*
// ==/UserScript==

(function ()
{
   function calc_offset()
   {
      var idx = document.location.search.search(/[?&]offset=(\d+)/);
      if (idx == -1) return 0;
      return RegExp.$1;
   }
   function getCookie(c_name)
   {
   var i,x,y,ARRcookies=document.cookie.split(";");
   for (i=0;i<ARRcookies.length;i++)
   {
      x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
      y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
      x=x.replace(/^\s+|\s+$/g,"");
      if (x==c_name)
         {
            return unescape(y);
         }
      }
   }
   function load_handler()
   {
      // Wrapper.
      var button_block = document.createElement("div");
      button_block.style = "position: absolute; top: .5em; left: 0;";
      // Form.
      var form = document.createElement("form");
      form.method = "POST";
      var e;
      // CSRF.
      e = document.createElement("input");
      var csrf = getCookie("CSRF_TOKEN").replace(/\"/g, "");
      e.type = "hidden"; e.name = "csrf"; e.value = csrf;
      form.appendChild(e);
      // Show deleted.
      e = document.createElement("input");
      e.type = "hidden"; e.name = "deleted"; e.value = 1;
      form.appendChild(e);
      // Submit button.
      e = document.createElement("input");
      e.type = "submit"; e.value = "Показать всё, что скрыто";
      form.appendChild(e);
      // Append to document.
      button_block.appendChild(form);
      document.body.appendChild(button_block);
   }
   document.addEventListener("DOMContentLoaded", load_handler, false);
})();
anonymousss ★★ ()
Ответ на: комментарий от anonymousss

А нет скрипта, чтобы по дефолту показывать всё удалённое?

KivApple ★★★★★ ()
Ответ на: комментарий от KivApple

Это к lexxus-lex.

Да и незачем — зайдешь куда-нибудь в конец 2005 года, а там тузиков больше чем остальных.

anonymousss ★★ ()
Ответ на: комментарий от KivApple

А нет скрипта, чтобы по дефолту показывать всё удалённое?

Я думаю, можно сделать, но зачем оно надо?:)

Тем более у кого меньше 1-й звезды - не смогут читать их.

lexxus-lex ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.