![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Witam
Natchnęła mnie jedna myśl i chcę posłuchać waszych opinii, porad i doświadczeń. Robimy sobie tablę w której mamy przykładowe pola imię i nazwisko. Ustalamy np takie coś:
Wszystko fajnie, mamy maksymalnie określoną wielkość. Ale jeśli chcemy zabezpieczyć się przed SQL injection dodając slashe, to musimy pomyśleć, że ktoś może mieć nazwisko z ' (O'Really) które ma 32 znaki (abstrahując - ale zawsze ktoś >> jakiś niedobry hakjer, może wpisać w pole 30 znaków ' <<). To co robić w taki przypadku? Deklarować np pole nazwisko varchar(60), ale ograniczać wpis przez 2 czyli do 30 znaków? Czy MySQL rezerwuje miejsce w pamięci dopiero jak wie, ile jest znaków w polu, czy z góry rezerwuje maksymalną ilość niezależnie od ilości wpisanych znaków? -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
[...] Czy MySQL rezerwuje miejsce w pamięci dopiero jak wie, ile jest znaków w polu, czy z góry rezerwuje maksymalną ilość niezależnie od ilości wpisanych znaków? To zależy od ROW_FORMAT. Może przyjąć wartość DYNAMIC lub FIXED. -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
To zależy od ROW_FORMAT. Może przyjąć wartość DYNAMIC lub FIXED. Jak i gdzie to sprawdzić? No i dalsze pytanie, jakie rozmiary ustawiać? Ten post edytował IceManSpy 1.08.2010, 12:53:01 -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Jak i gdzie to sprawdzić? No i dalsze pytanie, jakie rozmiary ustawiać? phpMyAdmin -> Operacje -> Opcje tabeli Jak ustawiać to już zależy od konkretnego przypadku. Przy ustawieniu FIXED dostęp do danych będzie szybszy, ale przy DYNAMIC baza danych będzie zajmowała mniej miejsca na dysku. -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
A jak z rozmiarem pola? Robić 2 razy większy niż chce czy jaki?
-------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Faktycznie, nie zapisuje. W takim razie po co robić stripslashes przy odczycie?
-------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Po nic. Stripslashes trzeba zrobić przed zapisem, jeśli mamy włączone magic_quotes
Kod if(get_magic_quotes_gpc()) {
$var = stripslashes($_POST['var']); } $var = mysql_real_escape_string($var); |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Ale jeśli mamy włączone magic_quotes, to nie musimy dbać o addslashes'y i o SQL injection?
-------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Musimy, bo to g...niane zabezpieczenie i nie uwzględnia wielu możliwych ataków. Dlatego przez stripslashes() odkręcamy to co robi magic_quotes, a potem używamy funkcji dedykowanej do naszej bazy danych.
Poza tym w następnej wersji PHP magic quotes w ogóle już nie będzie. http://wiki.php.net/rfc/magicquotes |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 07:47 |