jorgus
2.08.2006, 06:16:16
Jak pod względem bezpieczeństwa przeorganizować ten kod ? Chyba, że zabieczenia dodane są już wystarczające ?
<?php
$sql = "SELECT news.*, komentarze.nick as knick, komentarze.nr as knr, komentarze.t
resc as ktresc,
komentarze.data as kdata from news, komentarze where news.id = komentarze.newsID AND
komentarze.newsID=$id ORDER BY kdata ASC";
{
$i++;
echo '<h4> #' . $i . '</h4><p class="tresc">' . $ktresc . '</p><p class="autor">Napisał: ' . $knick . ' - <i>' . $kdata . '</i></p>';
}
print "<H3>Komentarz:</H3>"; //echo "<form method="POST" action="nowy.php">";
print "<FORM METHOD=POST><INPUT TYPE="hidden
" NAME="id
" VALUE="$id">"; print "<B>Autor</B><BR><INPUT TYPE="text
" NAME="nick
" VALUE="$nick" SIZE=60><BR> "; print "<B>Treść:</B><BR><TEXTAREA NAME="srodek
" "; print "ROWS=10 COLS=60>$srodek</TEXTAREA><BR>"; print "<INPUT TYPE="submit
" VALUE="dodaj
" name="gd
">";
if ($gd=='dodaj') {
if ($tresc && $nick && $nick!=admin) {
$zapytanie = "INSERT INTO komentarze (newsID, tresc, nick, "." data) VALUES ('$id', '$srodek', '$nick', "." NOW());";
}
?>
bigZbig
2.08.2006, 07:59:14
Wartosc id w formularzu tez mozna podmienic wiec ja bym rowniez te wartosc sprawdzil.
jorgus
2.08.2006, 08:14:53
Cytat(bigZbig @ 2.08.2006, 07:59 )

Wartosc id w formularzu tez mozna podmienic wiec ja bym rowniez te wartosc sprawdzil.
tzn jak ?
NetJaro
2.08.2006, 08:44:46
Może stworzyć formularz u siebie np. na localhost'ie odwołujący się do Twojego skryptu

Tzw. podmiana formularzy.
jorgus
2.08.2006, 09:08:23
acha no, a jak zabezpieczyć ? ktoś w poprzednim poście pisał 'sprawdzić', ale jak sprawdzić, srobić sesje dla id np. ?
bigZbig
2.08.2006, 09:09:26
Cytat(jorgus @ 2.08.2006, 09:14 )

tzn jak ?
Pytasz jak mozna podmienic, czy jak sprawdzic?
NetJaro
2.08.2006, 09:13:49
Aby sprawdzić, sprawdzasz, czy HTTP_REFER zawiera dane Twojego serwera ;-)
bigZbig
2.08.2006, 09:17:17
Mowiac sprawdzic mialem na mysli np. czy wartosc id jest liczba lub czy nie zawiera np. znaku srednika.
nospor
2.08.2006, 09:19:53
Athlan
2.08.2006, 09:26:54
Cytat
Aby sprawdzić, sprawdzasz, czy HTTP_REFER zawiera dane Twojego serwera ;-)
chyba HTTP_REFERER

a dokładniej $_SERVER['HTTP_REFERER'];
pozdraiwam
jorgus
2.08.2006, 10:06:19
<?php
?>
tak można to id przepuścić i bedzie ok ?
a tym REFEREM to nie wiem jak

a reszta z tego kodu oprócz $id byłaby ok pod względem bezpieczeństwa ?
SongoQ
2.08.2006, 10:08:35
Referer da sie obejsc, wiec nie jest to dobrym rozwiazaniem.
Athlan
2.08.2006, 11:01:09
Cytat
Referer da sie obejsc, wiec nie jest to dobrym rozwiazaniem.
powiedz jak, jeżeli można... wiesz teraz myślę nad zabezpieczeniami i chce wiedzieć jak byś mógł obejść mój referer ?
pozdrawiam
nospor
2.08.2006, 11:09:44
Cytat
powiedz jak, jeżeli można... wiesz teraz myślę nad zabezpieczeniami i chce wiedzieć jak byś mógł obejść mój referer
Ja przykladowo tego nie wiem, ale wiem, ze moj firewall blokuje REFERER, przez co dany serwer nie dostaje tego badziewia. I jak mi ktos kiedys stronke zabezbieczyl REFEREREM, to musialem firewall'a wylaczyc by polatac po formularzach.... bardzo wnerwiajace zabezpieczenie i zniechecajace do danej stronki. Bo zeby po niej polatac to musze miec wyłączonego FireWalla
Cytat
Ja przykladowo tego nie wiem, ale wiem, ze moj firewall blokuje REFERER, przez co dany serwer nie dostaje tego badziewia. I jak mi ktos kiedys stronke zabezbieczyl REFEREREM, to musialem firewall'a wylaczyc by polatac po formularzach.... bardzo wnerwiajace zabezpieczenie i zniechecajace do danej stronki. Bo zeby po niej polatac to musze miec wyłączonego FireWalla
no to jak polecacie, bo już zaczynałem się wgryzać w tego REFERER'a, ale skoro takie oproblemy to nie stosuje, więc jak najlepiej ?
SongoQ
2.08.2006, 11:29:25
Cytat
powiedz jak, jeżeli można... wiesz teraz myślę nad zabezpieczeniami i chce wiedzieć jak byś mógł obejść mój referer ?
W php wysylajac do serwera takie cos:
fputs($rSocketOpen, "Referer:
http://forum.php.pl/r/n");Patrz funkcja fopen - pisze jak byk w manualu.
Kolejny przyklad FF i odpowiednia wtyczka ma mozliwosc zmiany feferera. Nie wiem czy wiesz ale referer jest wysylany przez przegladarke a nie serwer.
A tak pozatym to polecam przeczytac rfc
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
jorgus
2.08.2006, 12:26:18
no tak jak to w końcu, co Wy używacie ? bo dalej nie wiem, linki przeczytałem, ale i tak nie wiem.
A tak zazwyczaj to jak to się zabepiecza ?
NetJaro
2.08.2006, 12:26:51
OK, dobra bo się czuje winny

Ew. możesz w formularzu na swojej stronie dać jakąś sesje ($_SESSION['formularz'] = true;) i sprawdzać czy ta sesja istnieje. Nikomu nie chce sie bawić w ten sposób, zwłaszcza, że mozna stworzyć bardziej skomplikowane nazwy i wartości sesji
bigZbig
2.08.2006, 12:59:55
Chłopaki (przepraszam jesli wypowiadała tu się jakas kobieta) po co te sesje i referery? Chodzi o to aby na serwerze odbierac bezpieczne dane, do czego moim skromnym zdaniem wystarczy wyeskejpowac lub usunąc potencjalnie niebezpieczne znaki typu srednik, cudzyslowy itp. Moze w wyniku takich minimalistycznych dzialan dodam do bazy bzdury, ale nie utrace danych ani nie dopuszcze do wykonania niebezpiecznego kodu.
Athlan
2.08.2006, 13:07:57
@bigZbig - a mnie wkurza jak np mi wypełniaja formularz z cudzej strony i odwołuje się on do mojego linka, który zapisuje te dane... poza tym na tym polegją m.in. boty - maja formularz i jazda...
może te sesje jednorazowe to rzeczywiście niezły pomysł... tworzona zostaje przy wyswietleniu formularza i niszczona po akcjach nastąpionych po wykonaniu żądania (
unset" title="Zobacz w manualu php" target="_manual)
co Wy na to?
jorgus
2.08.2006, 13:16:24
napiszcie taki przykład z tymi sesjami w takim razie, bo boty to też nie dobra rzecz i gdzie to wsadzić w formularzu
Athlan
2.08.2006, 13:33:01
na przykład
form.php
<?php
$_SESSION['form'] = time(); ?>
// formularz prowadzący do: dodaj_komentarz.php
dodaj_komentarz.php
<?php
if($_SESSION['form'] < (time() - 600)) {
// akcja ...
}
else
{
// wiadomosc o niepowodzeniu
}
?>
w powyższym przykładzie sesja otrzymuje czas wygenerowania formularza... nikt nie bedzie pisał komenatz dłużej niż 10 min, więc sprawszamy czy sesja nie posiada mniejszej wartości i czy wogóle ja ma

pozdrawiam

(pisane z palca)
bigZbig
2.08.2006, 13:41:30
Zabezpieczenie przed botami to juz inna sprawa, ale napisz mi prosze Athlan jak by sejse mialy chronic przed botami?
jorgus
2.08.2006, 15:03:57
@Athlan ok dzięki, a jak ma to zabezpieczać, tzn. przed czym. Ja rozumie wedle tego, że przed tym, żeby nikt nie ślęczał za długo nad formularzem. Mnie się rozchodzi od początku gdzie zamieściłem kod o jego bezpieczeństwo i tam pojawiły się głosy, że $id jest przekazywana w taki sposób że może zostać to wykorzystane do niecnych celów.
tutaj natomiast przestawiasz kod, który i tak co prawda wykorzystam, ale czy on również rozwiązuje kwestie tego $id ?
A może to $id powinienem przesyłać w sesji ?
Athlan
2.08.2006, 15:10:26
~jorgus a ja teraz mówie o kwestji miejsca, w którym ów formularz jest zamieszczony... formularz zostanie przyjęty tylo z tej strony, z której sesja zotsała wysłana

czyni nie z zewnątrz

@bigZbig:
Cytat
napisz mi prosze Athlan jak by sejse mialy chronic przed botami
nie wiem czy dobrze rozumuje, ale czytelm gdzies, ze najczesciej boty sa robione w javascript i maja wbudowany formularz ktory wysylaja za pomocą JS: ducument.forms[0].submit()
poza tym boty chyba nie robią sesji na serwie - ale tu nie jestem pewien

i szczerze w to wątpie (śiat byłby piękny

)
pozdrawiam

ps: ciacho jest przetrzymywane u usera a sesja na servie
jorgus
3.08.2006, 05:41:07
no teraz to kumam, a odnśnie innych błędów w kodzie z pierwszego postu mógłby się ktoś odnieść ?
Athlan
3.08.2006, 10:49:39
bigZbig
3.08.2006, 14:08:15
Cytat(Athlan @ 2.08.2006, 16:10 )

ps: ciacho jest przetrzymywane u usera a sesja na servie

@Athlan - a identyfikator sesji gdzie jest przetrzymywany po stronie usera?
Pucy
10.08.2006, 13:11:42
Ja uwazam, ze jezeli nie wiecie jak dzialaja dokladnie botki, czy tworza sesje czy jej nie tworza, to powinniscie sie jednak bardziej skupic na tresci jaka zostanie wyslana. Co wam przyjdzie po zludnych zabezpieczeniach jezeli zostanie napisany taki bocik, ktory i tak to w jakis sposob obejdzie. A czasami warto wrocic do korzeni, zabezpiczeczajac tresc jakakolwiek zostalaby wyslana przez usera czy bota... wiecej roboty? watpie...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.