2GOOD4U
2GOOD4U 1.6 Server's iP
cs.ko.tl:27015 Dust2
cs.ko.tl:27016 Aim
cs.ko.tl:27017 Awp
cs.ko.tl:27018 Italy2
cs.ko.tl:27019 5on5 #1

Join the forum, it's quick and easy

2GOOD4U
2GOOD4U 1.6 Server's iP
cs.ko.tl:27015 Dust2
cs.ko.tl:27016 Aim
cs.ko.tl:27017 Awp
cs.ko.tl:27018 Italy2
cs.ko.tl:27019 5on5 #1
2GOOD4U
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Средства за защита на входните данни

Go down

Нормална Средства за защита на входните данни

Писане by hARDCORE Чет Апр 21, 2011 4:23 am

Какво означава SQL инжекция?
SQL инжекциите са начин за променяне на заявката ви към базата данни.
MySQL, MSSQL или друга няма значение. Ето нагледен пример за SQL
инжекция:
Първоначално в тестов скрипт има заявка за извеждане на данни от MySQL според id, подадено чрез GET.
Ето я заявката:

ЦитатSELECT * FROM tablica WHERE id = '$id'



При нормално изпълнение на скрипта променливата $id ще съдържа номер,
но ако някой напише на мястото на цифрата това: 5'; DROP TABLE tablica;
-- ще може да ви съсипе цялата база данни. Тази инжекция използва GET
(променливи подадени чрез http адреса). Може да се направи чрез POST,
SESSION, COOKIE и дори SERVER ако ги използватe в скриптовете си.

Сега ще започнем с различните начини да се предпазим от този и други
видове атаки. Това са различни функции, които по един или друг начин
модифицират входният текст, за да го направят безвреден за вашият
скрипт. Ще обясня действието на тези функции.

htmlspecialchars($tekst);
Променя текста, като замeства всички специални символи за HTML като <
> % & " и други с техните аналози в HTML. Това ги променя така,
че те могат да се виждат в браузера, но той няма да ги счита за HTML и
те няма да се изпълнят. Това предпазва от този тип "атаки", които
прехвърлят потребителя към други страници. Те подават HTML, а тази
функция го неутрализира.

strip_tags($tekst);
Променя текста, като изтрива всякакви HTML тагове. НО, информацията
която се подава бива доста осакатена. Дори при потребителски имена от
типа на няма да остане нищо. Препоръчвам ви да не я
използвате освен ако не сте 100% сигурни, че такива текстове няма да се
въвеждат. Например при подаване на URL адреси.

trim($tekst);
Много опасна функция. Премахва всички празни места, таблуации, нови
редове и други подобни. Много внимавайте с нея. Използвайте я само в
данни, които сте сигурни, че НЯМА да има празни места. Освен това не
прави особена защита.

addslashes($tekst);
Основната защита срещу SQL инжекции. Слага \ пред всички кавички, така че SQL да ги игнорира. Винаги трябва да я имате.

Strip_tags(); и htmlspecialchars(); е няпълно Безсмислено да се
използват заедно в какъвто и да е ред. Използвайте или едната или
другата функция. По-добре htmlspecialchars();
Най-добрата комбинация е htmlspecialchars и addslashes. Така сте напълно
защитени. Не се лъжете от това, което някои казват, че повече функции
било по-добре защита. С повече функции можете само да си прецакате
скрипта.

Понякога е достатъчно само да проверите дали променливата е число или не. Това става много лесно:

Цитат$var = 555;
if ( (int)$var )
echo "Променливата е число";
else
echo "Променливата НЕ е число";



По принцип трябва за всяка променлива да изпълнявате тези функции, но аз
ви предлагам по-компактно решение. Този скрипт ще обходи всички входни
данни и ще ги направи безвредни за вашите кодове. Достатъчно е само да
го сложите в отделен файл и да инклудвате този файл във всеки ваш скрипт
в самото начало.


Цитатfunction za6titi($tekst)
{
if ( (int)$tekst )
return $tekst;
else
{
$tekst = addslashes($tekst);
$tekst = htmlspecialchars($tekst, ENT_NOQUOTES);

return $tekst;
}
}

$_GET = array_map("za6titi", $_GET);
$_POST = array_map("za6titi", $_POST);
$_SESSION = array_map("za6titi", $_SESSION);
$_COOKIE = array_map("za6titi", $_COOKIE);
$_SERVER = array_map("za6titi", $_SERVER);
?>
hARDCORE
hARDCORE
Power user

Male Zodiac : Sagittarius Брой мнения : 297
Отсенка : 1337
Rep : 10
Регистриран на : 13.01.2010
Age : 27
Местожителство : PLOVDIV

точки
точки:
Средства за защита на входните данни  Left_bar_bleue652/1000Средства за защита на входните данни  Empty_bar_bleue  (652/1000)

https://bginter.bulgarianforum.net

Върнете се в началото Go down

Върнете се в началото

- Similar topics

 
Права за този форум:
Не Можете да отговаряте на темите