Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Poprawność , bezpieczeństwo zapytania
Ulysess
post
Post #1





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


mam 2 pytanka..

1 . ponizej mam zapytanie dodające dane do bazy i.. czy jest jakaś różnica w zapytaniach jakie dam 'ciapki' (IMG:style_emoticons/default/questionmark.gif) np że dla stringów inaczej a dla INT inaczej . Dodatkowo czy w zapytaniu select jak dam WHERE `pole` = 0 jest różnica między WHERE `pole` = '0' (IMG:style_emoticons/default/questionmark.gif) dodam tylko że `pole` jest INTem.
  1. $wykonano_zapytanie['a'] = mysql_query("INSERT INTO `tabela` (`a`,`b`,`c`,`d`,`e`) VALUES ('".mysql_real_escape_string(0)."','".mysql_real_escape_string($typ)."','".mysql_real_escape_string($pid)."','".mysql_real_escape_string(0)."','".mysql_real_escape_string($iduser)."')") or die(mysql_error());


2. jakiej funkcji najbezpieczniej używać aby na czacie wpisując np <span>tekst</span> lub jakiś kod php nie wykonał się tylko wydrukowało to co się wprowadziło.
z góry dziękuje
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
PanGuzol
post
Post #2





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

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


1. Jak pole jest INT to lepiej nie dawać wartości w apostrofy. Jeśli jest w apostrofach to traktuje jako string i musi zrobić konwersję.
2. htmlspecialchars

Ten post edytował PanGuzol 27.12.2010, 19:19:48
Go to the top of the page
+Quote Post
Ulysess
post
Post #3





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


1) konwertacja = dłuższy czas wykonywania zapytania (IMG:style_emoticons/default/questionmark.gif)
2) używam htmlspecialchars ale czy to na pewno bezpieczna metoda ?

i jeszcze jedno.. jeżeli zmienna przechodzi przez funkcje ABS to niezależnie czy pochodzi z formularza , obliczeń muszę używać mysql_real_escape_string (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) Jak cos jest INTem to ma to byc wkladane jako INT. Koniec kropka. Wkladacie w ciapkach od początku i się uczycie złych nawyków.
Przed wlozeniem takiego inta, zrzutuj sobie daną zmienną do inta dla pewnosci i po sprawie
$pid = (int)$pid;

2) jak powiedziano htmlspiecialchars(). Ale to przed wyswietleniem a nie przy wkladaniu do bazy,
Go to the top of the page
+Quote Post
Ulysess
post
Post #5





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


1.czyli jeśli zmienna jest typu INT to nie muszę dawać mysql_real_escape_string ?
2. w zmiennej pochodzącej z formularza jest treść wiadomości , przy zapisie nie muszę tego w żaden sposób filtrować tylko przy wyświetleniu używać htmlspecialchars (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) Tylko pod warunkiem ze zrzutujesz ją wpierw na inta tak jak ci napisalem
2) W najprostrzej postaci tak. Ale filtrowanie jakies wstepne zawsze moze byc- wszystko zalezec bedzie od Twoich potrzeb. Jesli z zalozenia, nie bedziesz pozwalal na zadne tagi html, to rob od razu strip_tags.
Go to the top of the page
+Quote Post
Ulysess
post
Post #7





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


a czy zamiast funkcji INT nie wystarczy funkcja ABS ?
używając INT max wartość to ~2,1mld a ja niejedno krotnie operuje na większych liczbach dodatkowo musi być dodatnie no i oczywiście używam funkcji CEIL do zaokrąglania tylko czy to odpowiednia metoda ?

Ten post edytował Ulysess 29.12.2010, 19:40:52
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




abs sluzy do wartosci bewzględnej. Jak nie chcesz przyjmować liczb ujemnych to mozesz uzywac abs.
Jak ci INT za malo, to sprawdzaj po prostu przy pomocy is_numeric() i jak cos nie jest liczbą numeryczną to wal bledem
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 18:45