Защита $HTML_GET_VARS

redsystem

Registered
Това как може да се защити
Код:
if (!isset($HTTP_GET_VARS['item'])) {
$myitem = "1";
} 
else {
$myitem = $HTTP_GET_VARS['item'];
}
 
redsystem каза:
Това как може да се защити
Код:
if (!isset($HTTP_GET_VARS['item'])) {
$myitem = "1";
} 
else {
$myitem = $HTTP_GET_VARS['item'];
}
$_GET_VARS[''] е остаряло ползва се $_GET и се защитава със htmlspecialchars() + addslashes()
ето така
$myitem = htmlspecialchars(addslashes($_GET['item']));
Ето един урок http://web-tourist.net/login/login/view.php?st=2418
 
Направих го така:
Код:
if (!isset(htmlspecialchars($_GET['item']))) {
$myitem = "1";
} 
else {
$myitem = htmlspecialchars(addslashes($_GET['item'])); 
}

но ми дава грешка:

Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE or '$'

Значи хакнаха ми сайт сигурно 10 пъти намерих грешката, а тя е тук:
Код:
<?
if (!isset($HTTP_GET_VARS['item'])) {
$myitem = "1";
} else {
$myitem = $HTTP_GET_VARS['item'];
}

$cl = array('','','','','','','','','','','','');
$cl[$myitem - 1] = " class='stop'";
?>
..............
<?
include "$myitem.htm";
?>
....................

И горе когато взимам страницата като id номер то става asd.php?item=5, като се махне 5 и сложат линк към шела им ми пронкват в сайт, има ли начин това да се оправи? :idea:
 
if (!isset($_GET['item'])){
$myitem = "1";
}
else {
$myitem = htmlspecialchars(addslashes($_GET['item']));
}
или сложи кода от урока във файл наречен zashtita.php
<?php
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);
?>
след това ако имаш конфиг файл ,който го инклудваш във всеки файл в конфига пишеш
include('zashtiti.php');
или
инклудни във всеки файл файла zashtiti.php
 
Незнам ама на мен ми се струва, че с регулярни изрази ще е най.добре защитено :?:
 
purko каза:
Незнам ама на мен ми се струва, че с регулярни изрази ще е най.добре защитено :?:
може да, а щом инклудваш файл от променлива най-добре е първо да проверяваш дали съществува на сървъра, ако не няма да го инклудваш:
if(is_file($myitem.".htm"))
{
echo "faila sushtestuva..";
//ostanali kod
}
else
{
echo "nqma takuv fail!";
}

сещаш ли се?
 
Имам един въпрос по темата. Какво ще стане ако сложа mysql_real_escape_string на GET/POST променлива, която няма връзка с база данни. Ще действа ли като addslashes?
 

Горе