|
| |
|
|
| |
для: RV
(29.08.2006 в 12:40)
| | | Лично я делаю так.
<?
$zapros='select .... чего то там ';
if($parametr==1) $zapros='select .... чего то там раз';
if($parametr==2) $zapros='select .... чего то там ещё';
if($parametr==3) $zapros='select .... чего то там третьего';
?>
|
ТО есть использую $parametr только для проверки, а не для содержимого запроса. | |
| |
|
|
| |
|
|
| |
для: tAleks
(29.08.2006 в 11:18)
| | | Если переменная текстовая, то да. Если числовая - до надо ее дополнительно проверять. | |
| |
|
|
| |
|
|
| |
для: cheops
(29.08.2006 в 12:09)
| | | идентификтор сессии тоже идет от пользователя. а это или get или post или cookies | |
| |
|
|
| |
|
|
| |
для: tAleks
(29.08.2006 в 11:51)
| | | Форма может быть расположена не на сайте, а на локальном хосте, кроме того, формы может не быть вовсе - злоумышленик может эмулировать поведение формы через сокеты. | |
| |
|
|
| |
|
|
| |
для: CrazyAngel
(29.08.2006 в 11:35)
| | | И $_POST, и $_GET, и $_COOKIE и реферер и пользовательский агент - всё подделывается - доверять более или менее можно только $_SESSION и то, если туда не попадает информация, введённая пользователем. | |
| |
|
|
| |
|
|
| |
для: tAleks
(29.08.2006 в 11:39)
| | | Вот хороший скрипт
<?php
//Данные
$dataPOST = urlencode("
&alogin=youmydream
&apass=12
\r\n\r\n");
$dataGET = urlencode("
&name=CrazyAngel
&email=CrazyAngel@CrazySoft.ru
&message=Здесь очень крутое сообщение
");
$Cookie = "drauO2AIHx68o = eXRuZ2hiZGJkcsdgmZ2;
drk4ioi37YZL6 = Y3JhenlhbmdghmlbA%3D%3D; ;";
$Referer = "CrazyAngel";
$UserAgent = "User-Agent: Script PHP/1.0";
//Адрес хоста
$hostname = "site.ru";
//Путь
$path = "/flirt/folders/";
$line = "";
//Коннект
$fp = fsockopen($hostname, 80, $errno, $errstr, 30);
// Проверка
if (!$fp) echo "$errstr ($errno)<br />\n";
else
{
$path .="?".$dataGET;
// Заголовок HTTP-запроса
$headers = "POST $path HTTP/1.1\r\n";
$headers .= "Host: $hostname\r\n";
//UserAgent
$headers .= $UserAgent;
//Подделка реферера
$headers .= "Referer: ".$Referer ."\r\n";
//Подделка cookies
$headers .= "Cookie:". $Cookie."\r\n";
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";
$headers .= "Content-Length: ".strlen($dataPOST)."\r\n\r\n";
// Отправляем HTTP-запрос серверу
fwrite($fp, $headers.$dataPOST);
// Получаем ответ
while (!feof($fp))
{
$line .= fgets($fp, 1024);
}
fclose($fp);
}
echo "<b>Полученные данные от сервера $hostname:</b><br>";
echo $line;
?>
|
| |
| |
|
|
| |
|
|
| |
для: cyberface
(29.08.2006 в 11:43)
| | | А как изменить скрытое поле на сайте? | |
| |
|
|
| |
|
|
| |
для: tAleks
(29.08.2006 в 11:39)
| | | Точно так же как и GET, достаточно лишь изменить форму.... например, ты добавляешь тему на форум, в форме добавления есть скрытое значение -
<input type="hidden" name="id" value="242">
|
Я могу легко ее изменить
<input type="hidden" name="id" value="242' OR 1=1/*">
|
Вот тебе и пример атаки. | |
| |
|
|
| |
|
|
| |
для: tAleks
(29.08.2006 в 11:36)
| | | ну, лично мне не охота, чтобы мой скрипт допуска ошибки =)
Ошибки эти связанны с корректностью данных в запросах.
По этому, я хорошо фильтрую данные, если данные число - проверяем их с помощью is_numeric, в случае ошибки присваиваю значение по умолчанию.
Если данные - строка, которая подчиняется правилам (например, в ней могут быть только буквенные символы и - _ ), то проверяю ее с помощью рег. выражений. | |
| |
|
|
| |
|
|
| |
для: CrazyAngel
(29.08.2006 в 11:35)
| | | как? можно пример? | |
| |
|
|
|