Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP] bezpieczeństwo, mysql_real_escape_string
peter13135
post
Post #1





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


czytałem conieco w manualu o mysql_real_escape_string (nawet po polsku jest opis:))
jednak jako początkujący webmasjter, niebardzo to rozumiem, więc mam pytanie
czy poniższy skrypt jest bezpieczny??


  1. <?
  2. //formularz
  3. //łączenie z bazą
  4. // jeśli wypełniono dane w formularzu
  5.  
  6. $login=$_POST['login'];
  7. $haslo=$_POST['haslo'];
  8. $login=mysql_real_escape_string($login);
  9. $haslo = mysql_real_escape_string($haslo)
  10.  
  11.  
  12. {
  13.  $sql=mysql_query("select * from userzy where login='$login' and haslo='$haslo' ");
  14.  }
  15. ?>


cały ten kod jest pisany "z palca", chce sie tylko dowiedzieć czy takie filtrowanie zmiennych jest bezpieczne, czy to wogóle oto chodzi

edit:// jeszcze jedno
czy "sprintf" to jest to samo co mysql_query?
Powód edycji: Poprawiłem tytuł tematu. /webdicepl


--------------------
:)
Go to the top of the page
+Quote Post
bełdzio
post
Post #2





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


mysql_real_escape_string ma za zadanie uchronic przed SQL injection tak wiec wstepnie powyzszy kod jest ok, dlaczego wstepnie? bo dochodzi jeszcze kwestia filtrowania txt na wystepowanie znacznikow html

sprintf służy do formatowania stringa, mysql_query do wykonywania zapytan mySQL:)


--------------------
Go to the top of the page
+Quote Post
peter13135
post
Post #3





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


aha, czyli jak jeszcze te zmienne "przelece" przez htmlspecialchars to będdzie ok?


--------------------
:)
Go to the top of the page
+Quote Post
pyro
post
Post #4





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


niom


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
bełdzio
post
Post #5





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Cytat(peter13135 @ 10.08.2008, 15:19:07 ) *
aha, czyli jak jeszcze te zmienne "przelece" przez htmlspecialchars to będdzie ok?

tak ale w odpowiedni sposób smile.gif zerknij tu -> http://www.beldzio.com/obsluga-html.freez


--------------------
Go to the top of the page
+Quote Post
peter13135
post
Post #6





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


dzięki za linka, ten artykuł rozjaśnił mi conieco sprawe
znalazłem tam takie coś
  1. <?php
  2. $zmienna = htmlspecialchars( strip_tags( $zmienna ), ENT_QUOTES, 'UTF-8' );
  3. ?>


problem w tym że mam strone na iso-8859-2 , więc ten kod ma wyglądać w ten sposób??

  1. <?php
  2. $zmienna = htmlspecialchars( strip_tags( $zmienna ), ENT_QUOTES, 'iso-8859-2');
  3. ?>


czy może wstarczy napisać poprostu takie cośquestionmark.gif
  1. <?php
  2. $zmienna = htmlspecialchars( strip_tags( $zmienna ), ENT_QUOTES, 'iso');
  3. ?>


i czy takie coś uchroni mnie zarówno przed html jak i xss?


--------------------
:)
Go to the top of the page
+Quote Post
bełdzio
post
Post #7





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


jeśli korzystasz z iso to ostatni parametr mozesz pominac, a co do xss to dorzuc do tego strip_tags i powinno byc ok smile.gif


--------------------
Go to the top of the page
+Quote Post
peter13135
post
Post #8





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


napisałem taką funkcje...
  1. <?
  2. function zabezpiecz($zmienna)
  3. {
  4. $zmienna = htmlspecialchars( strip_tags( $zmienna ), ENT_QUOTES);
  5. $zmienna = mysql_real_escape_string($zmienna);
  6. if( strpos( $zmienna, 'script' )) {exit;} 
  7. }
  8. ?>


czy jest ona poprawna?


--------------------
:)
Go to the top of the page
+Quote Post
robos85
post
Post #9





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


ja używam tego:
  1. <?php
  2. function sqlesc ($content) {
  3. $content = (! get_magic_quotes_gpc ()) ? mysql_real_escape_string ($content) : $content;
  4. return $content;
  5. }
  6. ?>

Czyli muszę do tego kodu dowalić htmlspecialchars" title="Zobacz w manualu PHP" target="_manual?
Go to the top of the page
+Quote Post
Shili
post
Post #10





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


Jeśli nie zamierzasz tego nigdy wyświetlać na stronie, to nie. Jeśli zamierzasz, to jednak wypadałoby zabezpieczyć się przed xss.
Z tym że w przypadku magic quotes proponowałabym użyć stripslashes a następnie mysql_real_escape_string.
Go to the top of the page
+Quote Post
peter13135
post
Post #11





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


Cytat(Shili @ 11.08.2008, 13:43:44 ) *
Jeśli nie zamierzasz tego nigdy wyświetlać na stronie, to nie. Jeśli zamierzasz, to jednak wypadałoby zabezpieczyć się przed xss.
Z tym że w przypadku magic quotes proponowałabym użyć stripslashes a następnie mysql_real_escape_string.


a do kogo ta odpowiedźquestionmark.gif
ja mam zabezpieczenie i przed xss htmlspecialchars i mysql_real_escape_stroing


--------------------
:)
Go to the top of the page
+Quote Post
robos85
post
Post #12





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Cytat(Shili @ 11.08.2008, 13:43:44 ) *
Jeśli nie zamierzasz tego nigdy wyświetlać na stronie, to nie. Jeśli zamierzasz, to jednak wypadałoby zabezpieczyć się przed xss.
Z tym że w przypadku magic quotes proponowałabym użyć stripslashes a następnie mysql_real_escape_string.


Tego kodu używam do filtracji np w logowaniu w pobieraniu loginu, lub w zapytaniach ...WHERE `id`='".sqlesc($_POST['id'])."'); ....
Do takich celów starczy?
Go to the top of the page
+Quote Post
Shili
post
Post #13





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


@peter13135
Do @robos85.
Swoją drogą uważam, że jeśli chcesz użyć mysql_real_escape_string nie ma sensu używać ENT_QUOTES w htmlspecialchars.

@robos85
Myślę, że do takiego czegoś starczy spokojnie.
Go to the top of the page
+Quote Post
robos85
post
Post #14





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Cytat(Shili @ 11.08.2008, 13:57:35 ) *
@robos85
Myślę, że do takiego czegoś starczy spokojnie.


a jeżeli chciałbym, aby ktoś dodawał mi do bazy tekst - i mógł zamieszczać tam znaczniki to taki kod wystarczy?
  1. <?php
  2. function sqlesc ($content) {
  3. $content = (! get_magic_quotes_gpc ()) ? mysql_real_escape_string (htmlspecialchars($content)) : $content;
  4. return $content;
  5. }
  6. ?>


czy może w środku powinno być:
  1. <?php
  2. ?>
?
Go to the top of the page
+Quote Post
peter13135
post
Post #15





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


w takim razie czy mogłbyś przerobić moją funckje??
bo niewiem jak powinna wyglądać


--------------------
:)
Go to the top of the page
+Quote Post
paziek
post
Post #16





Grupa: Zarejestrowani
Postów: 207
Pomógł: 25
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


@robos85:
  1. <?php
  2. function sqlesc ($content) {
  3. $content = (! get_magic_quotes_gpc ()) ? mysql_real_escape_string ($content) : $content;
  4. return htmlspecialchars($content);
  5. }
  6. ?>


Przy magic_quotes też trzeba się zabepieczyc przed XSS.


@peter13135: Funkcja jest OK, ale sądzę, że nie ma sensu łączyć strip_tags() z htmlspecialchars() (w typ przypadpku), jako, że drugie zamienia tobie tagi <> na HTMLowe encje (? zwał jak zwał) i są wtedy one wyświetlane w formie tekstowej (tak jak na tym forum), więc żadne XSS nie ma wtedy prawa bytu.
strip_tags() używaj, jeśli chcesz usuwać tagi z wprowadzanego tekstu, zamiast je wyświetlać z htmlspecialchars(). Plus, dla strip_tags() możesz podać listę 'dozwolonych' tagów, np. <b>, <i> oraz <u> są dobrymi przykładami nieszkodliwych tagów.

Przykład:
Wysyłam komentarz o treści <script>alert('Shackowałem cię!');</script>
htmlspecialchars("<script>alert('Shackowałem cię!');</script>"); wyświetli <script>alert('Shackowałem cię!');</script>
strip_tags("<script>alert('Shackowałem cię!');</script>"); wyświetli alert('Shackowałem cię!');
Oba są niegroźne, ale wynik różny, prawda?

Ten post edytował paziek 11.08.2008, 13:59:24
Go to the top of the page
+Quote Post
peter13135
post
Post #17





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


ymm, tak patrze na swój kod i widze coś takiego
[php]$zarejestruj=$_POST['zarejestruj'];
$login = htmlspecialchars($_POST['login']);
$haslo = htmlspecialchars($_POST['haslo']);
$email = htmlspecialchars($_POST['email']);
$gg = htmlspecialchars($_POST['gg']);
$www = htmlspecialchars($_POST['www']);
$skad = htmlspecialchars($_POST['skad']);
$zainteresowania = htmlspecialchars($_POST['zainteresowania']);
$plec = htmlspecialchars($_POST['plec']);
[/php

a czy niewystarzy dać htmlspecialchars($_POST) questionmark.gif?
(dodam że teraz to ja będe je filtrował swoją funkcją zabezpiecz(), ale mniejsza z tym)


--------------------
:)
Go to the top of the page
+Quote Post
paziek
post
Post #18





Grupa: Zarejestrowani
Postów: 207
Pomógł: 25
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Cytat
a czy niewystarzy dać htmlspecialchars($_POST) ?

Nie, bo $_POST to tablica, a nie ciąg znaków.

Ale możesz zrobić coś podobnego przy zastosowaniu array_map http://pl.php.net/manual/pl/function.array-map.php

Ten post edytował paziek 11.08.2008, 14:23:02
Go to the top of the page
+Quote Post
robos85
post
Post #19





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


A co z kolejnością 2ch funkcji - pisałem tutaj - która dobra?
Go to the top of the page
+Quote Post
bełdzio
post
Post #20





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


1. zrezygnuj ze sprawdzania get_magic_quotes_gpc
2. mysql_real_escape_string (htmlspecialchars($content))


--------------------
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 08:11