Един от начините за nonces в WordPress и тяхното въздействие върху безопасността - WP списание

Начало → Разни → Един от начините за nonces в WordPress и тяхното въздействие върху сигурността

Вътре WordPress «скрит» основен набор от полезни инструменти. Един от тях - жетони за сигурността или «nonces», които могат да предпазват от някои видове неправилна употреба или злоупотреба от страна на сайта.

Те не са видими на страниците на интерфейса, но те са широко използвани в административната част на WordPress. Като част от тази статия, ще се счита за примери за използване на логика за създаване и работа с nonces, които могат да заменят своя собствена система.

Дадения случай. Брой се използва еднократно

Дадения случай означава "номер, използван някога» (п умбра използва само веднъж). Тези числа или "жетони" са съставени от цифри и букви, който е уникален за всеки потребител и за всяко действие, и имат ограничен "живот време", след което тя става невалидна.

Въпреки казано фразата "номер, използван веднъж", в действителност това не е така. Дадения случай се генерира (оттук, ще бъдат разгледани примери за генериране и описание на жизнения цикъл) за даден потребител и следователно действия ще бъдат непроменени докато жизнения цикъл е пълна.

За еднократна употреба, както те се наричат, защото те са предназначени за същата цел като настоящите жетоните еднократни. Например, nВеднага щом помощ защита срещу някои видове атаки, включително фалшифициране напречен сайт (CSRF) молби, но не предпазва от нападения за преиграване (преиграване Atack), защото дадения случай не е тестван за употреба само веднъж.

Грешен брой дадения случай WordPress сили да се даде в отговор на браузъра "403 Forbidden за" съобщение за грешка "Сигурни ли сте, че искате да направите това?".

Един от начините за nonces в WordPress и тяхното въздействие върху безопасността - WP списание

Сигурни ли сте, искате да направите това?

Създаване на брой nВеднага щом

В WordPress предварително е необходимо функционалност за създаване и добавяне на nВеднага щом URL като аргумент или скрито поле вътре в матрицата. Има някои основни функции и да работи в някои други ситуации.

поколение nВеднага щом

в процес трайното случва с помощта на ключа и солите, които са уникални за всеки сайт, освен ако не е инсталиран правилно WordPress. За тази цел постоянно NONCE_KEY и NONCE_SALT. обявен във файла за WP-config.php.

Понякога стойностите, определени линия "Въведете тук уникална фраза." В този случай, трябва да използвате API за създаване на таен ключ. подмяна на тези стойности. След тази процедура, всички потребителски пароли ще останат валидни, но те ще трябва да влезете отново.

Къде са дадения случай

генериране на номера nВеднага щом системата не ги съхранява в база данни, тъй като тя може да изглежда на пръв поглед. По време на одитния означение се генерира отново и в сравнение с тази, която е била получена.

Дадения случай като аргумент URL

За да добавите nВеднага щом на URL адреса съществува функция wp_nonce_url (). които е необходимо да се премине URL и линия, показваща действие. Например:

За максимална сигурност, уверете се, че линията, описващ действието, наречен най-специфичния. В горния пример, името на действието ще изглежда като боклук-post_123.

Numbers nВеднага щом във формата

По подразбиране функцията показва две скрити области. Първата има таен номер nВеднага щом. Вътре второто поле - текущия URL (референт). Например:

С такъв разговор ще бъде изведен в следните области скрити форми:

Както и в предишния пример, за максимална безопасност линия, като описва действията, които да бъдат специално определени максимално.

В допълнение, можете да посочите друго име в полето дадения случай, а не да се оттеглят от сферата на референтите и уточни, че резултатът трябва да се върне, а не изход. За подробности вижте Използване wp_nonce_field функция за описание на страници () в WordPress код.

Нестандартно използване на дадения случай

За да създадете nВеднага щом за използване в други случаи, използвайте wp_create_nonce (функция). минаваща като аргумент на линията, описваща ефекта. Например:

След това, в променливата $ дадения случай ще бъде уникален ключ, например, 295a686963.

Да не забравяме, че тук, за максимална сигурност като аргумент трябва да премине линията, възможно най-точно, описващ извършеното деяние.

Проверка на валидността на номерата nВеднага щом

За всички три метода nВеднага щом изпълнение, както е описано в предишния раздел, има функция, с която можете да проверите валидността на токен.

Проверка nВеднага щом, получена с административните страници

За да проверите дадения случай, предава чрез URL или под формата на WordPress администраторския панел, трябва да използвате check_admin_referer (функция). минаваща като аргументи на линията, която описва името на действието.

Функционална проверка и поле референт nВеднага щом и ако проверката не е успешно, ще има обичайното действие - прекратяване на кода с отговор 403, както и съобщение за грешка.

Ако използвате името на полето само за дадения случай, различен от този по подразбиране, трябва да го посочите като вторият аргумент:

Моля, имайте предвид, че тази функция работи само в административния панел на WordPress, и не е подходящ за използване във формите, публикувани на предната част на сайта. Ако искате да се провери валидността на кода дадения случай на предната страна, използвайте функцията wp_verify_nonce () (вж. По-долу).

Проверка nВеднага щом, получена чрез AJAX заявка

Ако сте получили nВеднага щом чрез AJAX-заявки, използвайте check_ajax_referer (функция). Като аргумент, трябва да се премине на името на действието:

Функция проверка nВеднага щом и ако проверката е успешна, ще завърши с изпълнението на кода. Имайте предвид, че този подход не взема под внимание поле референт, но тази функция е убеден, че искането наистина дойде на AJAX.

Ако използвате името на полето само за дадения случай, различен от описаните по подразбиране (_wpnonce или _ajax_nonce), ще трябва да премине допълнителни параметри. Детайли на страница check_ajax_referer функция () в WordPress код.

Проверка nВеднага щом, получени чрез други методи

Nonces, получени по други начини, включително в предната част на обекта, могат да бъдат тествани с помощта wp_verify_nonce (функция). Тази функция може да отнеме два аргумента: стойността на полученото nВеднага щом кодът и името на действието. Например:

В случай на отрицателен резултат не трябва да продължи обработката на искането. Обикновено в такива случаи, е причинено wp_nonce_ays (). която дава на браузъра "403 Forbidden» съобщение за грешка.

Промяна на системата в дадения случай WordPress

Системата работи с дадения случай може да бъде модифициран с помощта на разнообразни събития и филтри. Някои от функциите, които ще работят с дадения случай се поставя в pluggable.php файл. а това означава, че те могат лесно да бъдат заменени с вашите собствени.

Например, за да се промени AJAX заявки проверката на логиката, е необходимо да напишете свой собствен check_ajax_referrer () функция на приставката. Списъкът на функциите и филтри, за да работят с дадения случай може да се намери в Кодекса.

Промяна в продължителността на живота кодове nВеднага щом

По подразбиране, действието на термина nВеднага щом се равнява на един ден. След това, броят на nВеднага щом вече не е валидна, дори и ако същото име действие. За да промените часа, използвайте nonce_life филтър. Трябва да укажете време, за секунди. Например, следния код определя срока на валидност на 4 часа:

Имайте предвид, че дадения случай, както бе споменато по-горе, не е "номер се използва еднократно." Валидност nВеднага щом не съвпада със срока на този еднократен жетони.

За да брои живот nВеднага щом, WordPress използва система с два "кърлежи" часове, в които един кърлеж се равнява на половин живот. През втората отметка дадения случай може да бъде актуализиран, например чрез AutoSave.

В настройките по подразбиране, когато продължителността на дадения случай е валидна за 24 часа, това означава, че информацията за времето в дадения случай, каза много дванадесет часа периоди от време е изтекъл от началото на епохата на Unix.

Дадения случай, създадени в периода от 12:00 до 24:00 часа ще бъде валидна до 12:00 часа на следващия ден. действителната продължителност на живота ще бъде на стойност между 12 и 24 часа. В примера по-горе, където животът е определена на 4 часа означава, че дадения случай е валидна между 2 до 4 часа.

За да се разбере напълно същността на разгледаме функцията на изходния код wp_nonce_tick (). която връща броя на 12-часови интервали.

И сега на wp_verify_nonce (функция). Проверява nВеднага щом и в същото време да брои кърлежи.

Извършване на допълнителни проверки

За извършване на допълнителни тестове в момента, когато check_admin_referer на функцията () установи, че дадения случай и референтът е валиден, можете да използвате check_admin_referer като събитие:

По същия начин, може да се "залепи" на събитието в рамките check_ajax_referer check_ajax_referer () повикване.

Промяна на външния вид на страницата за грешка

Външен вид на страницата със съобщение за грешка, за да се получи в случай на nВеднага щом инвалидност, може да бъде променена. wp_nonce_ays () функция изпраща необходимите функции на съобщението за грешка с драматична заглавие wp_die на (). В последната има няколко филтри, за да отделяте AJAX обработка, XML-RPC, както и всички други искания. Например:

Прихващане Филтър, можете да зададете своя собствена функция, която може да даде страница с напълно различен външен вид.

В заключение следва да се отбележи, че ако се развиват тема и особено плъгини за WordPress, не забравяйте да използвате за еднократна употреба номер nВеднага щом във всички интерфейси, като тяхната липса може лесно да доведе до напукване на сайтове потребителите си.