[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: SQL inj ME
Страницы: 1, 2
Tapak
Как может попасть мусор, если поля которые не обрабатываются заблокированы, а в начале стоит
if($_SERVER['REQUEST_METHOD'] == POST)

Если может, лучше скажите как это предотвратить.
В общем, мусор попадает... Что делать?(
Valick
Цитата
Как может попасть мусор, если поля которые не обрабатываются заблокированы

А что мне мешает прямо сейчас у себя на компе создать такую же форму с разблокированными полями и послать вам массу интересного? Скажите адрес, и ждите в гости smile.gif
Найти у вас уязвимость сложно, так как код не полный и очень "грязный".
Где-то забыли про переменную, вот и результат.
кстати registr_globals = off ?


_____________
Стимулятор ~yoomoney - 41001303250491
Tapak
off, off . Чем вам мой код не нравится?)
Tapak
Нашел, была ошибка в приеме данных, имени. Все таки, чем мой код не красивый? И где можно почитать о том как правильно писать.
Valick
Цитата
Чем вам мой код не нравится?

по части логики и считайте это пока на уровне интуиции
правильно писать вас научит время и практика smile.gif
я вот сейчас отрыл скрипт своего теста на файлах который писал несколько лет назад, начал пересматривать и код значительно сократился, причем некоторые куски просто выбрасывал немного пересмотрев логику проверок

_____________
Стимулятор ~yoomoney - 41001303250491
Tapak
<?php 
header("Location: index.php");
date_default_timezone_set('Europe/Kiev');
session_start();
require_once 'config.php';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$uniq_id = mt_rand(0, 12345678910);
$uniq = mysql_query("SELECT `productid`, `product`, `seller`, `datetime` FROM `accounting` WHERE `productid` =
'"
.$uniq_id."'") or die(mysql_error());
$datetime = date('Y:m:d');
$product = trim($_POST['productname']);
$error = false;
$errortext = '';
if($product == NULL)
{
$error = true;
$errortext = 'Поле не может быть пустым';
}
if(strlen($product) > 35)
{
$error = true;
$errortext = 'Название не должно превышать 35 сиволов';
}
if(mysql_num_rows($uniq) != '0')
{
$error = true;
return;
}
if($error == false)
{
$done = mysql_query("INSERT INTO `accounting` (`productid`, `product`, `seller`, `datetime`) VALUES (
'"
.$uniq_id."',
'"
.mysql_real_escape_string($product)."',
'"
.$_SESSION['user']."',
'"
.$datetime."')") or die(mysql_error());
echo 'Товар успешно добавлен';
}
else
{
echo $errortext;
}
}



?>

Вот как выглядит рабочий код, было бы интересно узнать, что так, а что нет.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.