ďťż
 
=?UTF-8?B?YmV6cGllY3plxYRzdHdv?= formularza ďťż
 
=?UTF-8?B?YmV6cGllY3plxYRzdHdv?= formularza
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

=?UTF-8?B?YmV6cGllY3plxYRzdHdv?= formularza



kmmdg - 31-10-2007 00:01
=?UTF-8?B?YmV6cGllY3plxYRzdHdv?= formularza
  Witam!

Szukam dobrego sposobu na sprawdzenie, czy dane zostały na pewno wysłane z
formularza na mojej stronie, a nie z zewnętrznego hosta.

Pozdrawiam
Jakub

PS. Inne kwestie związane z bezpieczeństwem wysyłania danych z formularzy,
też chętnie poczytam.





=?UTF-8?B?QXJ0dXIgTXVzennFhHNraQ==?= - 31-10-2007 00:01

  kmmdg pisze:
> Szukam dobrego sposobu na sprawdzenie, czy dane zostały na pewno wysłane z
> formularza na mojej stronie, a nie z zewnętrznego hosta.

Nie ma takiego sposobu.

> PS. Inne kwestie związane z bezpieczeństwem wysyłania danych z formularzy,
> też chętnie poczytam.

Dane z formularzy nie są bezpieczne.

artur




kmmdg - 31-10-2007 00:01

  > Nie ma takiego sposobu.

> Dane z formularzy nie są bezpieczne.

To się dowiedziałem...




Szymon - 31-10-2007 00:01

  kmmdg pisze:
>> Nie ma takiego sposobu.
>
>> Dane z formularzy nie są bezpieczne.
>
> To się dowiedziałem...

Czyżbyś był niezadowolony z odpowiedzi???





Any User - 31-10-2007 00:01

  >> Szukam dobrego sposobu na sprawdzenie, czy dane zostały na pewno
>> wysłane z
>> formularza na mojej stronie, a nie z zewnętrznego hosta.
>
> Nie ma takiego sposobu.

Przy czym oczywiście można kombinować z kryptografią i captchą.

--
Czy każdy powinien mieć prawo głosu w wyborach?
http://pracownik.blogspot.com




Colin - 31-10-2007 00:01

  kmmdg wrote:
> Szukam dobrego sposobu na sprawdzenie, czy dane zostały na pewno wysłane z
> formularza na mojej stronie, a nie z zewnętrznego hosta.

function mksecret($len = 7) {
$znaki = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCV BNM0123456789';
$ilosc = strlen($znaki);
for ($i=0; $i<$len; $i++)
{
$znak = mt_rand(0,$ilosc-1);
$ret .= $znaki[$znak];
}
return $ret;
}
session_start();
if (!$_SESSION['token']) $_SESSION['token'] = mksecret();

W kodzie formularza:
<input type="hidden" name="token" value="'.$_SESSION['token'].'">

Przy odczytywaniu danych z formularza sprawdź ($_SESSION['token'] ==
$_POST['token']).




Any User - 31-10-2007 00:01

  >> Szukam dobrego sposobu na sprawdzenie, czy dane zostały na pewno
>> wysłane z
>> formularza na mojej stronie, a nie z zewnętrznego hosta.
>
> function mksecret($len = 7) {
>
> Przy odczytywaniu danych z formularza sprawdź ($_SESSION['token'] ==
> $_POST['token']).

Przy czym oczywiście to jest bardzo mało skuteczne - weryfikuje jedynie,
czy zewnętrzny automat umie obsługiwać sesje, a nie tylko robić
pojedyncze requesty.

Oprócz sugerowanej już kryptografii i captchy, można jeszcze próbować
weryfikować właściwości przeglądarki:

a) wywalić na stronie jakiś javascript i oczekiwać efektu jego wykonania
przez przeglądarkę - przy czym to ma wadę: niektórzy mają wyłączony
javascript

b) zrobić pełną walidację treści requesta (w tym głównie pola useragent)
i sprawdzić, czy to, co przeglądarka deklaruje w useragent, pokrywa się
z wyglądem requesta - ale z kolei to ma taką wadę, że trzeba mieć jakąś
wiedzę nt. odchyłek poszczególnych przeglądarek - demo tej techniki jest
w skrypcie o nazwie Big Brother (niestety nie mogę odnaleźć do niego linka)

--
Czy każdy powinien mieć prawo głosu w wyborach?
http://pracownik.blogspot.com




zdzisio - 31-10-2007 00:01

  Any User pisze:
>>> Szukam dobrego sposobu na sprawdzenie, czy dane zostały na pewno
>>> wysłane z
>>> formularza na mojej stronie, a nie z zewnętrznego hosta.
>>
>> function mksecret($len = 7) {
>>
>> Przy odczytywaniu danych z formularza sprawdź ($_SESSION['token'] ==
>> $_POST['token']).
>
> Przy czym oczywiście to jest bardzo mało skuteczne - weryfikuje jedynie,
> czy zewnętrzny automat umie obsługiwać sesje, a nie tylko robić
> pojedyncze requesty.
>

mozna też zapisać w sesji datę wygenerowania tokenu i sprawdzić jak
szybko po wygenerowaniu formulaża nastapił POST

a wtedy mój ulubiony komunikat "aplikacja podejrzewa że nie jesteś
człowiekiem. jezeli sie myli - poczekaj chwilę i wyślij formularz ponownie".

z




Any User - 31-10-2007 00:01

  >> Przy czym oczywiście to jest bardzo mało skuteczne - weryfikuje
>> jedynie, czy zewnętrzny automat umie obsługiwać sesje, a nie tylko
>> robić pojedyncze requesty.
>
> mozna też zapisać w sesji datę wygenerowania tokenu i sprawdzić jak
> szybko po wygenerowaniu formulaża nastapił POST
>
> a wtedy mój ulubiony komunikat "aplikacja podejrzewa że nie jesteś
> człowiekiem. jezeli sie myli - poczekaj chwilę i wyślij formularz
> ponownie".

No tak, ale pytanie, jak bardzo chcemy podnieść poziom trudności. To, o
czym piszesz, można konkretnie obejść w ten sposób:

http://www.idg.pl/news/129180.html

I o pomyśle na dokładnie takie coś, ja osobiście słyszałem w 2003.

--
Czy każdy powinien mieć prawo głosu w wyborach?
http://pracownik.blogspot.com




zdzisio - 31-10-2007 00:01

  Any User pisze:

> pytanie, jak bardzo chcemy podnieść poziom trudności.

no zgoda, bo przeciez juz ustaliliśmy że w gruncie rzeczy całkowicie
zabezpieczyć sie przed tym nie da.

ale ten watek rozpoczęło pytanie jak sprawdzać skad przychodzi POST a
nie czy ktoś jest, lub nie, automatem spamujacym.

sposób z zapisywaniem tokena do pola hidden formularza i do sesji jest
jak najbardziej poprawnym rozwiazaniem zadanego problemu

>
> http://www.idg.pl/news/129180.html
>

autorowi pomysłu zazdroszcze toku myslenia. bo to kolejny dowód na to ze
aby rozwiazać problem trzeba go najpierw poprawnie zidentyfikować.

bo problemem bylo rozpoznanie napisu i wpisanie go w pole formularza a
nie *automatyczne* rozpoznanie napisu i *automatyczne* wysłanie go postem.

bardzo błyskotliwe.

z.




porneL - 31-10-2007 00:01

  On Tue, 30 Oct 2007 22:32:52 -0000, zdzisio <zdzisio@poczta.xz.pl> wrote:

> mozna też zapisać w sesji datę wygenerowania tokenu i sprawdzić jak
> szybko po wygenerowaniu formulaża nastapił POST

A co za trudność dla komputera wykonać sleep()?
No i nawet takie coś nie zabezpiecza przed masowym wysyłaniem, bo można
żądać wielu tokenów równolegle.

Tak naprawdę jakikolwiek jednorazowy token *jest* gwarancją, że formularz
został wysłany "ze strony". Wymaga pobrania strony i wysłania formularza
-- dokładnie to robi przeglądarka. Taki token przy okazji broni przed
atakiem CSRF, ale nie jest żadnym zabezpieczeniem przeciw automatycznemu
wysyłaniu formularza przez boty. Jeśli przeglądarka może wysłać formularz,
to każdy przeglądarkopodobny wynalazek też. HTTP nie ma mechanizmu do
sprawdzania czy ktoś siedzi przed komputerem...

--
http://sblam.com <-- jeśli chodzi o blokowanie spambotów, to oczywiście
autoreklamuję się :)

this.author = new Geek("porneL");




zdzisio - 31-10-2007 00:01

  porneL pisze:
> On Tue, 30 Oct 2007 22:32:52 -0000, zdzisio <zdzisio@poczta.xz.pl> wrote:
>
>> mozna też zapisać w sesji datę wygenerowania tokenu i sprawdzić jak
>> szybko po wygenerowaniu formulaża nastapił POST
>
> A co za trudność dla komputera wykonać sleep()?

no zadna.

>
> Tak naprawdę jakikolwiek jednorazowy token *jest* gwarancją, że
> formularz został wysłany "ze strony". Wymaga pobrania strony i wysłania
> formularza -- dokładnie to robi przeglądarka. Taki token przy okazji
> broni przed atakiem CSRF, ale nie jest żadnym zabezpieczeniem przeciw
> automatycznemu wysyłaniu formularza przez boty. Jeśli przeglądarka może
> wysłać formularz, to każdy przeglądarkopodobny wynalazek też. HTTP nie
> ma mechanizmu do sprawdzania czy ktoś siedzi przed komputerem...
>

wszystko prawda i wcale nie twierdze, że jest inaczej.
zupełnie nie rozumiem dlaczego postanowiles napisac to akurat pod moim
postem, ale "tak, masz racje, zgadza sie" :)

z.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] (4.1 lub nowszy) pobieranie =?UTF-8?Q?rekord=C3=B3w?="minimalnych" problem z kodowaniem UTF-8 przy robieniu kopii zapasowej mysqldump i kodowanie utf-8 (brak polskich znakow) Poziome, pionowe paski lub siatka - jak =?UTF-8?B?enJvYmnEhz8g?= =?iso-8859-2?q?utf-8_i_problem_z_z=B3?= [postgresql] jdbc i =?UTF-8?B?d3lqxIV0a2k=?= z bazy mysql, utf-8 i blednie wyciagane znaki [MSSQL2000] Jak wyeksportować .txt w formacie UTF-8?? phpSolutions - szewc bez =?UTF-8?B?YnV0w7N3?= [MySQL] REGEXP =?UTF-8?B?ZG9rxYJhZG5pZSBkd2Egem5ha2k=?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • tejsza.htw.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com