Към bezplatno.info портал | Галерия | Рецепти | Чат | Цитати | #bezplatno.info @ uniBG | Филми | Футбол | Качване на картинки | orion8800.com
 Въпроси/Отговори ::  Търсене ::  Потребители ::  Потребителски групи ::   Регистрирайте се ::  Вход 


Google
 





- А стига бе, стабилен Shell и то с SMS?
- Ахам, при нашия спонсор Forci.com!

Ето малко уроци по php & mysql
 
Създайте нова тема   Напишете отговор
Безплатни домейни Форуми » IT Уроци
Предишната тема :: Следващата тема  
Автор Съобщение
qNuZoV
Забогатяващ
Забогатяващ


Регистриран на: 31 Авг 2008
Мнения: 96

38 Домейн Точки

МнениеПуснато на: Вто Сеп 02, 2008 6:34 pm    Заглавие: Ето малко уроци по php & mysql Отговорете с цитат

Какво означава 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 тагове. НО, информацията която се подава бива доста осакатена. Дори при потребителски имена от типа на <user> няма да остане нищо. Препоръчвам ви да не я използвате освен ако не сте 100% сигурни, че такива текстове няма да се въвеждат. Например при подаване на URL адреси.

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

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

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

Понякога е достатъчно само да проверите дали променливата е число или не. Това става много лесно:
<?php
$var = 555;
if ( (int)$var )
echo "Променливата е число";
else
echo "Променливата НЕ е число";

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

Забележете, че правя проверка за числа. Ако променливата е число не я прекарва през двете функции, защото първо - с числа не може да ви навреди, второ - променливата вече няма да е число и всички ваши проверки за числа в последствие ще бъдат неточни.
Вижте профила на потребителя Изпратете лично съобщение
Sponsor
Покажи мнения от преди:   
Безплатни домейни Форуми » IT Уроци Часовете са според зоната GMT + 2 Часа
Създайте нова тема   Напишете отговор
Страница 1 от 1

 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети
SMS Реклама

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/pipi/public_html/bezplatno/forum/includes/smsads.php on line 13
Към bezplatno.info портал | Галерия | Рецепти | Чат | Цитати | #bezplatno.info @ uniBG | Филми | Футбол | Качване на картинки | orion8800.com