Ее addslashes не работи ..

eddyy93

Registered
addslashes не иска да вкарва " \ " преди кавичките когато ги вкарвам в базата данни. А ако го echo преди да ги вкара в базата данни работи. >.<

PHP:
if(isset($s)) {


        $a=addslashes($_POST['a']);
        $b=addslashes($_POST['b']);

            
            
         
                   $c=date('d-m-o');
                   $d=date('H:i:s');

                   my_dbcon();
                   mysql_query("INSERT INTO table (a, b, c, d, e) VALUES ('$a', '$b', '$c', '$d', '$e')");
                   mysql_close();
                   header("Location: abc.php?nn_show=$nn");
                   exit;
    
    }
 
Е ти какво искаш, да ти набуха базата данни с наклонени черти ? Естествено, че няма да ги вкарва. То просто слашва стринга докато мине заявката, мине ли веднъж, стринга се праща чист в базата данни.
 
Ами не съм много сигурен за това ...





За това моля някой да ми направи ако може една функция за защита която да филтрира

shell кодове, sqlinjection, xss и останалите "бокл*ци" (извинявам се, ама си е така).

И още една фукнция която при извеждане не резултатите да си се появат кавичките и html таговете също. Но в source примерно този " < " символ да си се появава като " < " а на страницата като " < " нали да се предодвратят xss, но пък и да не ограничаваме нормлните потребители.

Сигурно искам много и не очаквам отговор, но ще се радвам някой да ми ги направи тези функции ... пробвах се сам но успех не получих.


Само за фукнцията да ви кажа да не е array_map просто обикновена, аз ще си е слагам на променливите който се нуждаят.
 
А сега при изкарване на резултатите как да си ги върна в нормален вид ..

Но в source да излизат като < > ; \' \' \" \"


Също така как да се защитя от shell кодове.
 
Да не отварям нова тема, за да питам ето този код ще ми подсигурили URL от евентуални атаки по него:


Код:
$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,"select") OR
strstr($queryString,"drop") OR
strstr($queryString,"truncate") OR
strstr($queryString,"update") OR
strstr($queryString,"union") 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;
}
 
eddyy93 каза:
Да не отварям нова тема, за да питам ето този код ще ми подсигурили URL от евентуални атаки по него:


Код:
$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,"select") OR
strstr($queryString,"drop") OR
strstr($queryString,"truncate") OR
strstr($queryString,"update") OR
strstr($queryString,"union") 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;
}

Това за мен е пълна простотия. 1000 проверки за нещо толкова просто. Валидирай си конкретния вход и няма да имаш проблем.
 
Еми щом искаш да си затрупан от ненужни неща, добре, твой избор. Но мой съвет е да си държиш възможно най-чисто нещата. Тези недомислени проверки първо, че могат да се напишат по много по-добър начин, второ не мисля, че е добро.

Лично аз не обичам при нередност да ми се секне сайта. Предпочитам да го пусна, като същевременно предотвратя атаката.

Друга добра практика е, когато сайта ти е пуснат публично вече, е да си спираш display_errors и да си направиш бисквитките httponly(освен, ако не ползваш javascript cookies),
 

Back
Горе