Защита на $_GET?

Какво точно се разбира под защитя?
Затова попринцип има $_POST
 
Чух от някъде, че при незащитена $_GET заявка може да се хакне някак сайта.. -> $getid = $_GET['id'];
 
преди да пусна сайт ако трябва 1 седмица ще отделя само да изчета целия форум за да си защитя максималко сайта както трябва ..


XML-RPC server accepts POST requests only.->XML-RPC сървърът приема POST заявки само.
по този начин ще рече че целия саит е само с пост ли :)
 
JimBeam каза:
преди да пусна сайт ако трябва 1 седмица ще отделя само да изчета целия форум за да си защитя максималко сайта както трябва ..


XML-RPC server accepts POST requests only.->XML-RPC сървърът приема POST заявки само.
по този начин ще рече че целия саит е само с пост ли :)

Да, това от еда страна е хубаво, от друга не е.
Това означава да не можеш да направиш примерно изкарване на новини да кажем от рода на
sajt.com/index.php?page=news&id=1

За да направиш това няма да е с обикновен линк а със форми навсякъде ако искаш така да ти е примерно линка.

Май много объркано го казах, сори :wink:
 
Вие дадохте една точка за support на animatora .
Натиснете тук за да се върнете в темата.
 
А как да защитя $_GET[''] ако изглежда така:

if(isset($_GET['page']))

Също така как да защитя и останалите:

if(in_array($_SERVER['REMOTE_ADDR'], $massive))
if (isset($_POST['submit']))
$_SERVER['PHP_SELF'];
if(!isset($_SESSION['user']))
$upmail = $_REQUEST['upmail'] ;

и ако не сложа "or die (mysql_error())" след всяко "mysql_query", проблем ли е?
 
Малко е стара темата, но за да не пускам нова ще питам тук - може ли някой да ми обясни какво означава числов тип и стрингов :oops: :D

Аз го разбирам така: ако е ?neshto=1 - числов ,а ако е ?neshto=edno - string. Моля кажете, че трябва да защитавам сайта
 
Числав е променлива от типа int - те е число със значеща стойност. примерно числата до 1000 да речем.

Стрингов тип е израз. В MYSQL се използва най-често VARCHAR за него.

Стринг ти е някоя дума - например web tourist site и т.н.

Може да бъде и израз - "web tourist is site";

да речем.


Стрингов тип може да съдържа цифри например " web tourist is my 1st site";

Но тези цифри не се използват за аритметични операции.


Php дава възможност да променяш типовете без да прилагаш специални операции. Например в PhP може пак да събереш два Стринга само от цифри. Когато езика открие тези стрингове той ги преобразува автоматично в числов тип.


П.с. - мисля че правилно си го разбрал
 
Правилно разбираш нещата. При ГЕТ където трябва да получаваш само числов тип му правиш проверка дали е число. Аз попринцип не правя проверка(ако ще влиза в заявка), а правя така..

Код:
sprintf("SELECT * FROM table WHERE id = %d", $_GET['id']);

така ако имаш пред числото някакъв знак различен от число ще ти върне 0 което попринцип е невалидна стойност за една заявка. Ако след числото имаш знак, то тогава ще вземе само числото и ще изпълни заявката.
Ако ти е от стрингов тип правиш проверка зали магическите кавички са пуснати, ако са пуснати можеш да вкарваш ГЕТ направо в заявката. Ако не са пуснати му слагаш mysql_real_escape_string();
 
Благодаря ви. Сега схванах горе-долу нещата :)
И аз като WildBeast искам да попитам как се защитава
Код:
if(isset([b]$_GET['page'][/b]))

WildBeast каза:
А как да защитя $_GET[''] ако изглежда така:

if(isset($_GET['page']))
 
Щом е в условието - скобичките на if не е нужно да го защитаваш. Само в заявката.
 
relax15pyt каза:
Какви стойност получаваш на page ? имена на страници ли ?
и аз сега защитавам страницирането ако е и със име и с номер как да се зашити
 
relax15pyt каза:
Какви стойност получаваш на page ? имена на страници ли ?
Ами това е от страницирането - не имена на страници, ами номера :)

PS: Кажете как да си пробвам защитата (с хакване)
 
Можеш с регуларни изрази или по-добре с готова функция:
if(isset($_GET['page']) and ctype_alnum($_GET['page'])) {
echo "Защитено";
} else {
echo "Не защитено";
}

А ако са ти само числа is_numeric и после за всеки случай:
$page = intval($_GET['page']);
 
Може и заявката да я сложиш в sprintf и след това да я подаваш на mysql_query();
Така няма да има нужда да ти изписва безсмислени работи.

Кой номер ти е за първа страница 0 или 1 ?
 

Back
Горе