Перейти к содержимому

 Друзья: Всё для вебмастера | [ Реклама на форуме ]


Rutor


Защита от PHP-inj и SQL-inj


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1
ComitaSEO

ComitaSEO

    Мегабайт

  • Members
  • PipPipPip
  • 266 сообщений
Защита от PHP-inj и SQL-inj

PHP код:

<? 
... 
$_GET['уязвимое_поле'] = htmlspecialchars($_GET['уязвимое_поле']); 
... 
?> 

PHP-inj
PHP код:
<?   
error_reporting(0);   

...   

function inc($do,$inc,$posle)   
{  

	$inc = htmlspecialchars($inc);  

	if(file($do.$inc.$posle))  
	{  
		$inc = str_replace('http','',$inc);  
		$inc = str_replace('ftp','',$inc);  
		$inc = str_replace(':','',$inc);  
		$inc = str_replace('/','',$inc);  
		$inc = str_replace('\\','',$inc);  
		$inc = str_replace('.','',$inc);  

		include($do.$inc.$posle);  
	}  

	else echo 'Файла не существует';  

}  

...   

if($_GET['page']) inc('',$_GET['page'],'.php');  

...   

?> 

SQL-inj:
PHP код:
<? 
... 
 function secure_sql($value) {  
		if( get_magic_quotes_gpc() ) {  
			$value = stripslashes( $value );  
		}  
		if( function_exists( "mysql_real_escape_string" ) ) {  
			$value = mysql_real_escape_string( $value );  
		} else {  
			$value = addslashes( $value );  
		}  
		return $value;  
} 
... 
?>


#2
Versus

Versus

    Бит

  • Members
  • 23 сообщений
И что же этот код означает?
По-моему достаточно только аргументы, передаваемые в SQL-запрос экранировать с помощью addslashes и всё!

#3
dossourse

dossourse

    Бит

  • Members
  • 9 сообщений
Versus, можно тогда будет сделать слепую скулю вроде...

#4
Joe_BLack

Joe_BLack

    Бит

  • Members
  • 12 сообщений
Параноидальный код...
Мудрость требует от нас быть мужественными, беззаботными, насмешливыми, буйными: ведь она
женщина и может любить лишь воина.
Фридрих Ницше

#5
nim2009

nim2009

    Бит

  • Members
  • 15 сообщений
Как человек кто пишет на пхп уже более 3х лет,скажу что данные ф-ции это отнють не панацея,нужно на уровне ORM модели работы с базой фильтровать.Я для этого юзаю детище Дмитрия Котерова DbSimple => ]]>http://dklab.ru/lib/DbSimple/]]> Рекомендую :)

#6
KZPROMO

KZPROMO

    Бит

  • Members
  • 6 сообщений
<?php
//отражение хакерских запросов
$request = strtolower(serialize($_REQUEST));
$urequest = urldecode($request);
$brequest = base64_decode($request);
$bag_req[] = "select";
$bag_req[] = "union";
$bag_req[] = "order";
$bag_req[] = "CONCAT";
$bag_req[] = "INFORMATION_SCHEMA";
$bag_req[] = "OUTFILE";
$bag_req[] = "DUMPFILE";
$bag_req[] = "$";
$bag_req[] = "LOAD_FILE";
$bag_req[] = "BENCHMARK";
$bag_req[] = "SUBSTRING";
$bag_req[] = "ASCII";
$bag_req[] = "CHAR";
$bag_req[] = "database";
$bag_req[] = "HEX";
$bag_req[] = "./";
$bag_req[] = "%00";
$bag_req[] = "+";
$bag_req[] = ".htaccess";
$bag_req[] = "config.php";
$bag_req[] = "(";
$bag_req[] = ")";
$bag_req[] = "document.cookie";

//сверка
foreach ($bag_req as $value) {
$value = strtolower($value);
if(eregi("$value", $request) || eregi("$value", $urequest) || eregi("$value", $brequest)) die("HACKING ATTEMPT");
}

?>


#7
Psixo

Psixo

    Байт

  • Moderator
  • Pip
  • 59 сообщений
В обоих примерах кода используются черные списки символов. Гораздо лучше использовать белые списки (разрешать только цифры и числа),либо использовать стандартные средства фильтрации хтмл кода и sql запросов.
JID: psixo@jabber.org

--= Sec|Null Team =--
---= ITSecure =---


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных