|
Има много различни подхода за защита на заявката към базата за данни, които са рзпространени сред разработчиците. Един от тях е чрез използването на sprintf(). Функцията sprintf() се използва за форматиране на низове. Повече за нея може да прочетете тук.
Нека разгледаме един пример, при който този метод би ви защитил кода, без да се налага да правите проверка на получените през $_REQUEST променливи: Нека имаме следното URL: http://yourdomain.com/delete.php?id=5 Скрипта, който ще изпълнява дадена операция нека изглежда по следния начин: CODE
Този скрипт би изпълнил следната заявка CODE
До тук всичко наред. Но представете си че даден потребител има възможността да промени стойноста на $_REQUEST['id'] и напише следното: http://yoursite.com/delete.php?id=5%20OR%20id!=0 То тогава при горния скрипт ще се изпълни следната заявка: CODE
Предполагам знаете какво означава това: За тези които не знаят - тази заявка ще изтрие реда с id=5 и всички останали редове, които имат id различно от 0, т.е всичко! За да предотвратите подобни ситурации направете следното: CODE
Какво точно прави функцията - В нашия случай, тя заменства %d с цяло число получено от $_REQUEST['id']. Ако се предаде на id стойноста 5%20OR%20id!=0, то тогава функцията ще замести %d с 5, тъй като останалите неща не са числа. Ако предадете нещо друго освен числа, то тогава функцията ще замени %d с 0. И както виждате, без много проверки вие защитихте до някаква степен вашия код, за да не може да ви изтрият "със да искат" таблицата! Разбира се в самата функция може да се използват и други функции, като например следното: CODE
За защита на вашия код има още много неща, които трябва да се направят. Не разчитайте само на това! Винаги трябва да имате контрол над стойностите, които се предават към вашия код. Винаги трябва да ги проверявате и да знаете техния тип, било то string, int или double. Даже е хубаво при проверката веднага да ги превръщате в съответния тип typecasting. Ето и пример: Да кажем ще получавате стойност на дадено id. Тогава правите следното: CODE
или CODE
и от тук натаък работите с променливата $id. По този начин вие имате навсякъде контрол върху променливите и техните типове и допринасяте поне малко за сигурноста на вашия продукт. Разбирасе ако някой реши да ви "хакне", все някакси ще успее. Всичко е въпрос на време и опит.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||









