Czy nonces są bezużyteczne?

11

To prawdopodobnie pytanie noob, ALE wysłuchaj mnie - czy nie ma sensu używać Nonce do ochrony przed takimi rzeczami jak złomiarki (skrobaczki phpcurl itp.)? Ale moja Nonce drukuje w nagłówku dokumentu tak:

/* <![CDATA[ */
var nc_ajax_getpost = {
    ...stuff...
    getpostNonce: "8a3318a44c"
};
/* ]]> */

Więc gdybym budował szybki scrapper, po prostu wziąłbym wartość nonce z tej strony, a następnie użyłbym jej w moim POST ... czyniąc całe ćwiczenie używania Nonce bezużyteczne ...

Czego tu brakuje?

Adrian
źródło
2
Nonces nie mają nic wspólnego ze skrobaniem zawartości, skąd masz ten pomysł? ..
Rarst
K, więc pozwólcie, że skorzystam z tego przykładu. Nonce jest używany, aby zapobiec atakowi związanemu z bezpieczeństwem ... napastnik może nadal dostać nonce ze strony internetowej, ponieważ jest wyświetlany publicznie ... wtf?
Adrian
1
Prawdopodobnie miałoby sens przeformułowanie tego na bardziej ogólne pytanie dotyczące nonce. Zbyt wiele komentarzy i początkowe sformułowanie dotyczące skrobania nie ma zastosowania.
Rarst

Odpowiedzi:

16

Jednostki jednorazowe są unikalne dla każdego zalogowanego użytkownika. Nie możesz zdrapać zalogowanych użytkowników, jeśli nie masz ich plików cookie. Ale jeśli masz pliki cookie użytkownika, już ukradłeś jego tożsamość i możesz robić, co chcesz.

Nonces mają na celu ochronę przed nakłonieniem użytkowników do zrobienia czegoś, czego nie chcieli zrobić, poprzez kliknięcie linku lub przesłanie formularza. Więc oni sami wykonują tę akcję (nieumyślnie), a nie atakujący.

scribu
źródło
2

http://en.wikipedia.org/wiki/Cryptographic_nonce

„W inżynierii bezpieczeństwa nonce jest dowolną liczbą używaną tylko raz do podpisania komunikacji kryptograficznej. ... Często jest to losowy ... protokół uwierzytelnienia, aby zapewnić, że stara komunikacja nie będzie mogła zostać ponownie wykorzystana w atakach z powtórzeniem”.

Chodzi o to, aby zatrzymać przesyłanie powtarzających się danych. Tworzysz niepowtarzalny osobisty identyfikator jednorazowego użytku, aby po przesłaniu danych można to zrobić tylko raz. Nie ma to nic wspólnego z przeglądaniem witryny. To właśnie robi scraping witryny. Jak odróżniłbyś robota zgarniającego od robota trałującego (takiego jak Google)?

TCBarrett
źródło
9
Muszę zauważyć, że (myląco) noncesy WordPress mogą być używane więcej niż jeden raz w porządku. Więc nie ma to również nic wspólnego z wielokrotnym przesyłaniem, chodzi o sprawdzenie zamiaru konkretnego użytkownika wykonującego określoną akcję w stosunku do określonego obiektu.
Rarst
3
@Rarst - doskonała uwaga na temat ponownego użycia nonce, a niestety komentarze w kodzie źródłowym i samym kodeksie wskazują, że jest to klucz jednorazowy. codex.wordpress.org/Function_Reference/wp_create_nonce - Co jest do bani, gdy opracujesz funkcję, zakładając, że te liczby nie sprawdzą się więcej niż jeden raz . :(
Marcus Pope