Избор на защита

Ev0luti0N

Registered
Здравейте, тукощо разгледах темата за защитите, та много объркано ми изглежда, защото всеки дава различна защита и е трудно да се избере.
Гледах на един потребител и си избрах неговата, но незнам дали точно тя е най-добрият избор защота ако можете да дадете по една оценка и ако е отрицателна да дадете това което мислите, че ще е по-добро :)
PHP:
function addslashall()
{
    if(!get_magic_quotes_gpc()){
        foreach ($_POST as $key=>$value) {
            if (is_array($value)) {
                foreach ($value as $key2=>$value2) {
                    $_POST[$key][$key2] = addslashes(htmlspecialchars($value2));
                }
            } 
            else {
                $_POST[$key] = addslashes(htmlspecialchars($value));
            }
        }

        foreach ($_GET as $key=>$value) {
            $_GET[$key] = addslashes(htmlspecialchars($value));
        }
    }
}
Благодаря

ПП: Искам да попитам, тази горната защита която представих как се ползва :D
Смисъл такъв аз мислих, че е addslashall($promenliva), но май не е така :idea:
 
http://php.net/manual/en/function.addslashes.php

http://www.php.net/manual/en/function.htmlspecialchars.php

Това е примерно ако някой се опита да вкара html или java код през $_POST и $_GET.

addslashes - Тази функции заменя някой символи като добавя " \ " ( не съм сигурен дали не беше " / ") и кода вече се променя и не може да навреди.

htmlspecialchars - Променя някой символи във други пак поради горния факт.

Ето примерно аз как си защитавам, този код съм го инклуднат във всяка страница на сайта:

PHP:
<?php
header ('Content-type: text/html; charset=utf-8');
$queryString = strtolower($_SERVER['QUERY_STRING']); 
if (strstr($queryString,"<") OR strstr($queryString,">") OR strstr($queryString,"(") OR strstr($queryString,")") OR 
strstr($queryString,"..") OR 
strstr($queryString,"*") OR 
strstr($queryString,"+") OR 
strstr($queryString,"!") OR 
strstr($queryString,"@")) { 
$loc = $_SERVER['PHP_SELF']; 
$ip = $_SERVER['REMOTE_ADDR']; 
$date = date ("d-m-Y @ h:i:s"); 
$lfh = "logs.php"; 
$log = @fopen ( $lfh,"a+" ); 
@fputs ($log, "Дата: $date | Атака от: $ip | Атака над: $loc?=$queryString\n<br>"); 
@fclose($log); 
echo "<font color=black>Try again</font>"; 
exit;
} 
?>
<?php
function za6titi($tekst)
{
if ( is_numeric($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); 
?>
Този код забранява използването на някой символи към променливите.
Добавя addslashes и htmlspecialchars .

Отделно си слагам на $_POST и $_GET функциите по този начин:
PHP:
$name = htmlspecialchars(addslashes($_POST['name']));

За защита от флоод ползвам captcha и криптирам паролите в md5 .

Е някой ще е добре и да обясни по-подробно. :)
Айде лека нощ на всички.
 
Ev0luti0N каза:
Здравейте, тукощо разгледах темата за защитите, та много объркано ми изглежда, защото всеки дава различна защита и е трудно да се избере.
Гледах на един потребител и си избрах неговата, но незнам дали точно тя е най-добрият избор защота ако можете да дадете по една оценка и ако е отрицателна да дадете това което мислите, че ще е по-добро :)
PHP:
function addslashall()
{
    if(!get_magic_quotes_gpc()){
        foreach ($_POST as $key=>$value) {
            if (is_array($value)) {
                foreach ($value as $key2=>$value2) {
                    $_POST[$key][$key2] = addslashes(htmlspecialchars($value2));
                }
            } 
            else {
                $_POST[$key] = addslashes(htmlspecialchars($value));
            }
        }

        foreach ($_GET as $key=>$value) {
            $_GET[$key] = addslashes(htmlspecialchars($value));
        }
    }
}
Благодаря

ПП: Искам да попитам, тази горната защита която представих как се ползва :D
Смисъл такъв аз мислих, че е addslashall($promenliva), но май не е така :idea:

Тази защита аз съм я постнал. Защитава ти ПОСТ и ГЕТ методите и се вика навсякъде, където имаш да защитаваш методи, а ако ти е динамичен сайта, я викаш в главния файл.

Извикай я и пробвай да направиш каквото и да било...


ЕДИТ: Просто я викаш най-отгоре, не се слага за всяка отделна променлива.
 
Някой беше казал, че е хубаво да се използва mysql_real_escape_string вместо htmlspecialchars и addslashes или грешка?
 

Back
Горе