PHP SECURITY
5 отговора
222 прегледа
PHP SECURITY
Хейда да поговорим малко за сигурността.
Порових се за информация относно тази тема, за съжаление открих такава само на английски език (пари за книжки нямам)..
Аз лично имам следния въпрос:
Как най-удобно и най-лесно можем да правим проверка на информацията въвеждана от даден потребител преди тя да бъде записана в базата данни.
Порових се за информация относно тази тема, за съжаление открих такава само на английски език (пари за книжки нямам)..
Аз лично имам следния въпрос:
Как най-удобно и най-лесно можем да правим проверка на информацията въвеждана от даден потребител преди тя да бъде записана в базата данни.
Re: PHP SECURITY
първо след като става въпрос за БД!
Данните винаги в единични кавички!!!
Защото човек вместо необходими данни може да напише и ;DELETE и какво ли още не. Едно приятелче се опитва точно така да ми направи поразии (Бета Тест), но нищо не се получи освен съобщение за грешка от БД.
После зависи за каква информация става въпрос!
Можеш да използваш различни функции например за махане на HTML тагове и т.н.
Данните винаги в единични кавички!!!
Защото човек вместо необходими данни може да напише и ;DELETE и какво ли още не. Едно приятелче се опитва точно така да ми направи поразии (Бета Тест), но нищо не се получи освен съобщение за грешка от БД.
После зависи за каква информация става въпрос!
Можеш да използваш различни функции например за махане на HTML тагове и т.н.
Re: PHP SECURITY
Защото човек вместо необходими данни може да напише и ;DELETE и какво ли още не. Едно приятелче се опитва точно така да ми направи поразии (Бета Тест), но нищо не се получи освен съобщение за грешка от БД.
tova nai-silno se otnasia za mssql. pri mysql mysql_query() execva samo po 1 query at a time i takova neshto ne moje da se napravi.
za pitashtia:
dobre e da nauchish angliiski ili pone tolkova kolkoto da ti vyrshi rabota.
mojesh da polzvash preg_match_all(), addslashes(), str_replace() i dr.
tova nai-silno se otnasia za mssql. pri mysql mysql_query() execva samo po 1 query at a time i takova neshto ne moje da se napravi.
za pitashtia:
dobre e da nauchish angliiski ili pone tolkova kolkoto da ti vyrshi rabota.
mojesh da polzvash preg_match_all(), addslashes(), str_replace() i dr.
Re: PHP SECURITY
Добра идея е да проверяваш стойностите от формата и по тип преди да пробваш да ги инсъртнеш.
Ако в таблицата имаш колона която е от тип INT и чакаш от формата
променлива number тогава използвай:
$number=(!empty($HTTP_POST_VARS['number']))?intval($HTTP_POST_VARS['number']):'';
if($number!=''&&is_numeric($number))...
--------------------
Аз ползвам следния клас
разбира се има и други методи. Можеш и сам да си ги напишеш само давам идея.
Използва се с:
if(is::integer($number,1,3))... //така например проверяваш дали е число между -999 и 999
asl-bg.com - шантаво като теб ;)
Ако в таблицата имаш колона която е от тип INT и чакаш от формата
променлива number тогава използвай:
$number=(!empty($HTTP_POST_VARS['number']))?intval($HTTP_POST_VARS['number']):'';
if($number!=''&&is_numeric($number))...
--------------------
Аз ползвам следния клас
class is {
function is() {
}
function integer($value, $min=1, $max='') {
if (preg_match("/^[-|+]?\d\{$min,$max}$/", $value)) return true;
return false;
}
}
разбира се има и други методи. Можеш и сам да си ги напишеш само давам идея.
Използва се с:
if(is::integer($number,1,3))... //така например проверяваш дали е число между -999 и 999
asl-bg.com - шантаво като теб ;)
Re: PHP SECURITY
v mysql ne raboti osven ako (tova ne sam go probval ama 4uh 4e raboti :-)) ne si slozi6 gaden ascii simvol v querito (ot sorta na ESC ili BackSpace) koeto da anulira predhodno vavedenia string i da zapo4ne6 na 4isto :-PPP
E tuk ni6to niama :[линк]
E tuk ni6to niama :[линк]
всички променливи в единични кавички! (и още)
Това с ;DELETE няма как да стане с MySQL API-то, но при липса на кавички могат да се правят и други магарии...пример:
И ако подадеш като id, вместо 5, примерно: 0 OR id!=0, цялото query става:
И не щеш ли цялата таблица бива изтрита.
По същия начин може да се заобикаля и login система.
А ако няма и magic_quotes, даже и кавичките не спасяват положението!...
DELETE FROM
tablename
WHERE
id=$id
И ако подадеш като id, вместо 5, примерно: 0 OR id!=0, цялото query става:
DELETE FROM
tablename
WHERE
id=0 OR id!=0
И не щеш ли цялата таблица бива изтрита.
По същия начин може да се заобикаля и login система.
А ако няма и magic_quotes, даже и кавичките не спасяват положението!...