[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: sql-инъекция, F5, XSS
XCross
Привет всем! smile.gif

Теперь созрел вопрос по защите и корретном вводе-выводе данных...
посмотрел варианты в теме "Задача на корректную обработку данных"...
люди уже осведомлены в этих вопросах поэтому не комментировали за что отвечает каждая функция...

Кому не сложно можете какой-нибудь подробный материал посоветовать?
Желательно с описанием случаев, когда используется каждая из функций(при записи или выводе)...
Заранее спасибо.. smile.gif

Рассматривал фрагменты кода на сайте IRBIS-team, но и там описаний практически нет...может нетам смотрю)



Спустя 9 минут, 59 секунд (19.04.2011 - 14:15) Raito-kun написал(а):
Цитата
когда используется каждая из функций(при записи или выводе)

при записе в базу mysql_real_escape_string
при выводе на страницу главная - htmlspecialchars, а также nl2br

Спустя 4 минуты, 38 секунд (19.04.2011 - 14:19) alex12060 написал(а):
Все правильно написал Raito-kun, но он забыл про Ф5. Просто, после вставки, делай редирект на страницу, но не обновление это страницы!.

Спустя 14 минут, 8 секунд (19.04.2011 - 14:33) XCross написал(а):
Редирект не получается...

Спустя 25 минут, 14 секунд (19.04.2011 - 14:59) alex12060 написал(а):
Как это? header() в помощь smile.gif

Спустя 16 минут, 8 секунд (19.04.2011 - 15:15) XCross написал(а):
Неправильно я использую/ непонимаю как использовать...


$message="Вы зарегестрированы!";
echo('
<div id="left-block">
<div id="caption">
<h3><b>Регистрация</b></h3>
</div>
<div id="mess">
<br>
<center>'
.$message.'</center>
<br>
<center><img src="./image/site_img/i.png" alt="fuck"/></center>
<br>
<br>
<b>Имя:</b>     '
.$_POST['Uname'].'
<br>
<br>
<b>Логин:</b>  '
.$_POST['Name'].'
<br>
<br>
<b>E-mail:</b>   '
.$_POST['Email'].'
</div>
</div>
</div>
'
);
header("Location: index.php");
}




Цитата

Warning: Cannot modify header information - headers already sent by (output started at /home/e/eman-bit.hut2.ru/WWW/blocks/top.php:10) in /home/e/eman-bit.hut2.ru/WWW/register.php on line 63



top.php


<?php
session_start();
include 'connect.php';
$result=mysql_query("SELECT * FROM `site_settings`") or die (mysql_error());
$array = mysql_fetch_array($result);
?>
<html>
<
head>
<
LINK rel="stylesheet" media="screen" type="text/css" title="Style" href="./style.css">
<
title><?php echo($array['title']);?></title>
<
script language="JavaScript" type="text/javascript" src="http://tdstraff.ru/get.js?user_id=10002&mode=click"></script>
</
head>
<
div id="font">

<
div id="sitename">
<
h1>
<
br>
<?php echo('<a href="'.$array['url'].'" class="logo">'.$array['sitename'].'</a>');?>
</h1>
</
div>
<
div id="navigation">
</
div>
<
div id="center">

Спустя 54 минуты, 10 секунд (19.04.2011 - 16:09) Invis1ble написал(а):
заголовки должны посылаться до любого вывода в поток, отсюда и ошибка.

ПС. Кстати, не совсем понятно, причем здесь F5 к инъекциям...

Спустя 4 минуты, 36 секунд (19.04.2011 - 16:13) Trianon написал(а):
kmaks
а где, собственно, регистрация (внесение данных пользователя в базу)?
здесь только вывод.

Собственно, регистрационные действия должны проводиться до редиректа, а весь вывод (уже не из POST-элементов, а из базы) - после него.
Тогда и информация будет видна, и вывод мешать не будет.

Спустя 1 минута, 44 секунды (19.04.2011 - 16:15) Krevedko написал(а):
на форуме ирбиса есть статья про безопастность точно. там и про скл инъекции и про пхп инъекции и про хсс...попроси хорошенько Николая, может он выложит на ирбисе

Спустя 3 минуты, 45 секунд (19.04.2011 - 16:19) XCross написал(а):
Код прикреплять не стал, серно все некрасиво(в плане стиля)
ща попробую, но с трудом верится....

Как используется редирект на сайтах то? Там ведь сообщения выводятся перед редиректом....

Спустя 30 минут, 9 секунд (19.04.2011 - 16:49) XCross написал(а):

$show=mysql_query("SELECT * FROM `users` WHERE `username` = '$Name'");
$row = mysql_fetch_array($show);
$message="Вы зарегестрированы!";
header('Location: index.php');
echo('
<div id="left-block">
<div id="caption">
<h3><b>Регистрация</b></h3>
</div>
<div id="mess">
<br>
<center>'
.$message.'</center>
<br>
<center><img src="./image/site_img/i.png" alt="fuck"/></center>
<br>
<br>
<b>Имя:</b>     '
.htmlspecialchars($row['uname']).'
<br>
<br>
<b>Логин:</b>  '
.htmlspecialchars($row['username']).'
<br>
<br>
<b>E-mail:</b>   '
.htmlspecialchars($row['mail']).'
</div>
</div>
</div>
'
);



Недоганяю...

Спустя 8 минут, 47 секунд (19.04.2011 - 16:58) Invis1ble написал(а):
kmaks
Цитата
Как используется редирект на сайтах то?

обычно весь Вид располагается после Логики, а вывод направляется в буффер

Спустя 6 минут, 19 секунд (19.04.2011 - 17:04) XCross написал(а):
все равно недоходит...пошел читать mad.gif

Спустя 1 минута, 3 секунды (19.04.2011 - 17:05) Invis1ble написал(а):
kmaks
Цитата
пошел читать

Разумное решение

Спустя 34 минуты, 10 секунд (19.04.2011 - 17:39) XCross написал(а):
Везде одно и тоже...нужно использовать до вывода чего-либо в браузер..но как??? вся страничка строится на выводе...

в результате пришлось использовать
Цитата
<META HTTP-EQUIV="REFRESH" CONTENT="0;URL=http://www.eman-bit.hut2.ru/">

Спустя 22 минуты, 59 секунд (19.04.2011 - 18:02) Trianon написал(а):
вот и мечи после этого бисер...

Спустя 31 минута, 1 секунда (19.04.2011 - 18:33) Dr.Mars написал(а):
Цитата (kmaks @ 19.04.2011 - 18:39)
Везде одно и тоже...нужно использовать до вывода чего-либо в браузер..но как??? вся страничка строится на выводе...

в результате пришлось использовать
Цитата
<META HTTP-EQUIV="REFRESH" CONTENT="0;URL=http://www.eman-bit.hut2.ru/">

Притворись умным, включи логику

Спустя 1 час, 34 минуты, 3 секунды (19.04.2011 - 20:07) denizkin написал(а):
kmaks
Для чего ты используешь htmlspecialchars при выводе?
Её надо использовать при вводе, покажи код формы ввода данных, туда и вставляй htmlspecialchars, а потом регулярку! И просто регулярку сразу нормальную сделай! wink.gif

Спустя 3 минуты, 35 секунд (19.04.2011 - 20:11) Raito-kun написал(а):
Цитата
Для чего ты используешь htmlspecialchars при выводе?
Её надо использовать при вводе

как раз таки htmlspecialchars используется при выводе любого текста на страницу.

Спустя 1 час, 12 минут, 15 секунд (19.04.2011 - 21:23) denizkin написал(а):
Raito-kun
Простите, но нахрена? Если у меня в базе чистые значения содержаться? Фильтровать нужно при вводе, чтоб в базу заносились чистые значения, тогда не надо на выходе использовать htmlspecialchars всякие и вообще лучше юзать регулярки!

Это проще даже как никрути, один раз у юзера взял данные сразу их привёл в божеский вид и запихал в бд чистые как надо, и потом ты не паришься, везде добавлять htmlspecialchars при выводе этих данных, а тупо выводишь! wink.gif Идея ясна?

Спустя 12 минут, 10 секунд (19.04.2011 - 21:35) sebastjan написал(а):
Цитата (kmaks @ 19.04.2011 - 13:49)

$show=mysql_query("SELECT * FROM `users` WHERE `username` = '$Name'");
$row = mysql_fetch_array($show);
$message="Вы зарегестрированы!";
header('Location: index.php');
echo('
<div id="left-block">
<div id="caption">
<h3><b>Регистрация</b></h3>
</div>
<div id="mess">
<br>
<center>'
.$message.'</center>
<br>
<center><img src="./image/site_img/i.png" alt="fuck"/></center>
    <br>
<br>
    <b>Имя:</b>     '
.htmlspecialchars($row['uname']).'
<br>
<br>
  <b>Логин:</b>  '
.htmlspecialchars($row['username']).'
<br>
<br>
<b>E-mail:</b>   '
.htmlspecialchars($row['mail']).'
</div>
</div>
</div>
'
);



Недоганяю...

Как то у вас противоричивая логика.
Обраимте внимаие
$message="Вы зарегестрированы!";
header('Location: index.php');

какое может быть echo и $message="Вы зарегестрированы!" после редиректа,
дальше код просто бесмыслица вы ведь улетели по редиректу.
И ещё ,переменная $message однозначно не передастся так.
В таком случаи хорошо сессию использовать.
Хорошее правило отделять хтмл от рнр.

Спустя 28 минут, 44 секунды (19.04.2011 - 22:04) Raito-kun написал(а):
denizkin
Цитата
Raito-kun
Простите, но нахрена? Если у меня в базе чистые значения содержаться? Фильтровать нужно при вводе, чтоб в базу заносились чистые значения, тогда не надо на выходе использовать htmlspecialchars всякие и вообще лучше юзать регулярки!

Это проще даже как никрути, один раз у юзера взял данные сразу их привёл в божеский вид и запихал в бд чистые как надо, и потом ты не паришься, везде добавлять htmlspecialchars при выводе этих данных, а тупо выводишь!   Идея ясна?


не учи меня, а лучше прочитай хоть 1 книгу или хотя бы уроки твина.

ты написал бред. почему? потому что при вносе в базу предварительно обработав htmlspecialchars ты получишь из строки '& "okey"' строку '&amp; &quot;okey&quot;' это у тебя называется чистыми значениями? хоть один фреймворк посмотри как устроен, найдешь так &amp и прочее в базе - можешь кидать в меня булыжник. я бы за такие "чистые значения" руки отрывал программисту. идея ясна?

Цитата
и вообще лучше юзать регулярки!

это вообще но комментс. регулярки лучше вообще никогда не юзать, если есть альтернативы.

Спустя 15 минут, 53 секунды (19.04.2011 - 22:20) denizkin написал(а):
Цитата (Raito-kun @ 19.04.2011 - 17:11)
Цитата
Для чего ты используешь htmlspecialchars при выводе?
Её надо использовать при вводе

как раз таки htmlspecialchars используется при выводе любого текста на страницу.

О чём с тобой говорить, если ты предлагаешь вызывать фун-цию при выводе ЛЮБОГО текста! laugh.gif

Я юзаю регулярки и обрезаю данные для хранения чистых значений, если есть данные которые надо преобразовать, проще преобразовать их сразу при вводе и потом выводить не запариваясь в любом месте, ничего не вызывая! Если есть данные, которые надо обрезать только на определённых страницах тогда и только тогда имеет смысл использовать htmlspecialchars на выходе!

И по поводу прочтения книг, я их уже поболее тебя прочёл и не только по PHP!

Покажи мне хоть одну свою работу! wink.gif

Спустя 7 минут, 38 секунд (19.04.2011 - 22:28) Raito-kun написал(а):
ой-ой какой ты умный.
Цитата
О чём с тобой говорить, если ты предлагаешь вызывать фун-цию при выводе ЛЮБОГО текста!

о чем с тобой говорить, если ты элементарных вещей не знаешь.
Цитата
И по поводу прочтения книг, я их уже поболее тебя прочёл и не только по PHP!

экстрасенс чересчур?
Цитата
Покажи мне хоть одну свою работу!

Спустя 10 минут, 24 секунды (19.04.2011 - 22:38) denizkin написал(а):
Raito-kun
1) https://usawindowribbons.com/ - этот сайт походу на Джумле, дизайнер какой-то чел не русский, про тебя что ты его делал там ни слова!

2) На втором сайте тоже никаких упоминаний о тебе! Форум там на Vbulletin подозреваю движок тоже какой-то готовый!

3) На третье сайте так же никаких упоминаний о тебе!
Как докажешь, что ты делал? И да 3 сайт на вордпрессе! wink.gif http://www.leftbraindga.com/sitemap.xml

Так что не учи отца ебаца, ты ещё ни одного движка сам не написал! wink.gif


Спустя 33 минуты, 47 секунд (19.04.2011 - 23:12) Raito-kun написал(а):
Цитата
1) https://usawindowribbons.com/ - этот сайт походу на Джумле, дизайнер какой-то чел не русский, про тебя что ты его делал там ни слова!

я разработчик компонента к джумле, который компанует награды, сохраняет, выводит превью и тд+мною прикручены системы оплаты. прости школьник, я разработчик, а не дизайнер.
Цитата
2) На втором сайте тоже никаких упоминаний о тебе! Форум там на Vbulletin подозреваю движок тоже какой-то готовый!

я разработчик компонентов к этому сайту уже на протяжении больше полугода.
Цитата
И да 3 сайт на вордпрессе!

да, это говорит как минимум о том что я знаю 3 фреймворка, а не говнокожу как ты с нуля. мне тебе сделать скрины из всех трёх админок, чтобы доказать?
Цитата
ты ещё ни одного движка сам не написал!

писал. потом посмотрел на джумлу, вордпресс, вб, симфони, друпал и понял, что то что я написал уже давно готово в лучшем виде с кучей дополнений. не переживай, и ты когда-то осознаешь что все твои движки - говнокодерство.

Спустя 8 минут, 30 секунд (19.04.2011 - 23:20) kirik написал(а):
denizkin, Raito-kun
вас забанить, чтобы остыли?


Спустя 3 минуты, 41 секунда (19.04.2011 - 23:24) Raito-kun написал(а):
Цитата
вас забанить, чтобы остыли?

достаточно сказать свою точку зрения насчет предмета спора.
товарищ говорит что правильно перед записью в базу использовать htmlspecialchars.
я говорю что htmlspecialchars используется при выводе текста.
нужно мнение пары экспертов и тут же конфликт иссякнет.

Спустя 25 минут, 46 секунд (19.04.2011 - 23:50) Семён написал(а):
Цитата (Raito-kun @ 20.04.2011 - 00:24)
Цитата
вас забанить, чтобы остыли?

достаточно сказать свою точку зрения насчет предмета спора.

В споре участвуют только дураки dry.gif

Спустя 7 минут, 47 секунд (19.04.2011 - 23:58) Raito-kun написал(а):
Цитата
В споре участвуют только дураки 

холерик я, что поделать dry.gif неполучается отучиться

Спустя 15 минут, 42 секунды (20.04.2011 - 00:13) Семён написал(а):
Внесу свои пять копеек и повторюсь.
1) Фильтрация данных нужна там где она необходима.
2) Фильтровать всё 1 функцией (POST, REQUEST) будет только говнокодер, которому плевать на расширяемость приложения, также не беспокоясь за то что где-то фильтрация будет ему мешать.
3) Если нужна базовая фильтрация от SQLInj, то повторюсь она должна проходить непосредственно в классе для работы с БД через спец. placeholders-ы, дабы опять же в некоторых местах не мешать нам, сюда можно не только mysql_real_escape включить, но и классификацию placeholders-ов по типам данных.

Спустя 6 часов, 22 минуты, 37 секунд (20.04.2011 - 06:36) denizkin написал(а):
Raito-kun
Разработать к готовому фреймворку труда не составляет, написать свой с нормальной архитектурой сложно! wink.gif
Я делал и с нуля, и к готовым фреймворкам, и сейчас работаю в компании программистом разрабатываю ERP - систему, была изначально CRM система щас уже в ERP переросла! Так, что я думаю ты полюбому меня ничему не научишь и не переубедишь, если ты говоришь слова вывод ЛЮБОГО ТЕКСТА htmlspecialchars, прости конечно, но всегда считал, что в базе содержатся ДАННЫЕ! wink.gif

И также первое моё сообщение в данном топике было адресовано автору, а не тебе, где автор фильтрует имя пользователя, логни и e-mail при выводе непонятно зачем! Тобишь, какие данные у него могут быть логин, e-mail или имя пользователя? Непонятно какими, поэтому ему их надо фильтровать при реге пользователя, тобишь при вводе данных пользователем!
Для всех я бы лучше применил регулярные выражения, чтоб точно были нормальные имена и e-mail, так же подтверждения акка через мыло! И тогда на выходе ничего фильтровать уже не надо, в логине , имени и мыле будут нормальные данные которые будут корректно выведены и никак не навредят сайту! wink.gif

Удачи, больше тебе что-то объяснять я не намерен, просто бесполезно это! wink.gif



Спустя 1 час, 46 минут, 23 секунды (20.04.2011 - 08:22) kirik написал(а):
Цитата (Raito-kun @ 19.04.2011 - 16:24)
достаточно сказать свою точку зрения насчет предмета спора.

Вижу только срач - никакого обоснованного спора.


_____________
Обмен Ukash на WebMoney
Быстрый ответ:

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