Теперь созрел вопрос по защите и корретном вводе-выводе данных...
посмотрел варианты в теме "Задача на корректную обработку данных"...
люди уже осведомлены в этих вопросах поэтому не комментировали за что отвечает каждая функция...
Кому не сложно можете какой-нибудь подробный материал посоветовать?
Желательно с описанием случаев, когда используется каждая из функций(при записи или выводе)...
Заранее спасибо..
Рассматривал фрагменты кода на сайте 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() в помощь
Спустя 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 к инъекциям...
ПС. Кстати, не совсем понятно, причем здесь F5 к инъекциям...
Спустя 4 минуты, 36 секунд (19.04.2011 - 16:13) Trianon написал(а):
kmaks
а где, собственно, регистрация (внесение данных пользователя в базу)?
здесь только вывод.
Собственно, регистрационные действия должны проводиться до редиректа, а весь вывод (уже не из POST-элементов, а из базы) - после него.
Тогда и информация будет видна, и вывод мешать не будет.
а где, собственно, регистрация (внесение данных пользователя в базу)?
здесь только вывод.
Собственно, регистрационные действия должны проводиться до редиректа, а весь вывод (уже не из 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 написал(а):
все равно недоходит...пошел читать
Спустя 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) | ||
Везде одно и тоже...нужно использовать до вывода чего-либо в браузер..но как??? вся страничка строится на выводе... в результате пришлось использовать
|
Притворись умным, включи логику
Спустя 1 час, 34 минуты, 3 секунды (19.04.2011 - 20:07) denizkin написал(а):
kmaks
Для чего ты используешь htmlspecialchars при выводе?
Её надо использовать при вводе, покажи код формы ввода данных, туда и вставляй htmlspecialchars, а потом регулярку! И просто регулярку сразу нормальную сделай!
Для чего ты используешь htmlspecialchars при выводе?
Её надо использовать при вводе, покажи код формы ввода данных, туда и вставляй htmlspecialchars, а потом регулярку! И просто регулярку сразу нормальную сделай!
Спустя 3 минуты, 35 секунд (19.04.2011 - 20:11) Raito-kun написал(а):
Цитата |
Для чего ты используешь htmlspecialchars при выводе? Её надо использовать при вводе |
как раз таки htmlspecialchars используется при выводе любого текста на страницу.
Спустя 1 час, 12 минут, 15 секунд (19.04.2011 - 21:23) denizkin написал(а):
Raito-kun
Простите, но нахрена? Если у меня в базе чистые значения содержаться? Фильтровать нужно при вводе, чтоб в базу заносились чистые значения, тогда не надо на выходе использовать htmlspecialchars всякие и вообще лучше юзать регулярки!
Это проще даже как никрути, один раз у юзера взял данные сразу их привёл в божеский вид и запихал в бд чистые как надо, и потом ты не паришься, везде добавлять htmlspecialchars при выводе этих данных, а тупо выводишь! Идея ясна?
Простите, но нахрена? Если у меня в базе чистые значения содержаться? Фильтровать нужно при вводе, чтоб в базу заносились чистые значения, тогда не надо на выходе использовать htmlspecialchars всякие и вообще лучше юзать регулярки!
Это проще даже как никрути, один раз у юзера взял данные сразу их привёл в божеский вид и запихал в бд чистые как надо, и потом ты не паришься, везде добавлять htmlspecialchars при выводе этих данных, а тупо выводишь! Идея ясна?
Спустя 12 минут, 10 секунд (19.04.2011 - 21:35) sebastjan написал(а):
Цитата (kmaks @ 19.04.2011 - 13:49) |
Недоганяю... |
Как то у вас противоричивая логика.
Обраимте внимаие
$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"' строку '& "okey"' это у тебя называется чистыми значениями? хоть один фреймворк посмотри как устроен, найдешь так & и прочее в базе - можешь кидать в меня булыжник. я бы за такие "чистые значения" руки отрывал программисту. идея ясна?
Цитата |
и вообще лучше юзать регулярки! |
это вообще но комментс. регулярки лучше вообще никогда не юзать, если есть альтернативы.
Спустя 15 минут, 53 секунды (19.04.2011 - 22:20) denizkin написал(а):
Цитата (Raito-kun @ 19.04.2011 - 17:11) | ||
как раз таки htmlspecialchars используется при выводе любого текста на страницу. |
О чём с тобой говорить, если ты предлагаешь вызывать фун-цию при выводе ЛЮБОГО текста!
Я юзаю регулярки и обрезаю данные для хранения чистых значений, если есть данные которые надо преобразовать, проще преобразовать их сразу при вводе и потом выводить не запариваясь в любом месте, ничего не вызывая! Если есть данные, которые надо обрезать только на определённых страницах тогда и только тогда имеет смысл использовать htmlspecialchars на выходе!
И по поводу прочтения книг, я их уже поболее тебя прочёл и не только по PHP!
Покажи мне хоть одну свою работу!
Спустя 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 сайт на вордпрессе! http://www.leftbraindga.com/sitemap.xml
Так что не учи отца ебаца, ты ещё ни одного движка сам не написал!
1) https://usawindowribbons.com/ - этот сайт походу на Джумле, дизайнер какой-то чел не русский, про тебя что ты его делал там ни слова!
2) На втором сайте тоже никаких упоминаний о тебе! Форум там на Vbulletin подозреваю движок тоже какой-то готовый!
3) На третье сайте так же никаких упоминаний о тебе!
Как докажешь, что ты делал? И да 3 сайт на вордпрессе! http://www.leftbraindga.com/sitemap.xml
Так что не учи отца ебаца, ты ещё ни одного движка сам не написал!
Спустя 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) | ||
достаточно сказать свою точку зрения насчет предмета спора. |
В споре участвуют только дураки
Спустя 7 минут, 47 секунд (19.04.2011 - 23:58) Raito-kun написал(а):
Цитата |
В споре участвуют только дураки |
холерик я, что поделать неполучается отучиться
Спустя 15 минут, 42 секунды (20.04.2011 - 00:13) Семён написал(а):
Внесу свои пять копеек и повторюсь.
1) Фильтрация данных нужна там где она необходима.
2) Фильтровать всё 1 функцией (POST, REQUEST) будет только говнокодер, которому плевать на расширяемость приложения, также не беспокоясь за то что где-то фильтрация будет ему мешать.
3) Если нужна базовая фильтрация от SQLInj, то повторюсь она должна проходить непосредственно в классе для работы с БД через спец. placeholders-ы, дабы опять же в некоторых местах не мешать нам, сюда можно не только mysql_real_escape включить, но и классификацию placeholders-ов по типам данных.
1) Фильтрация данных нужна там где она необходима.
2) Фильтровать всё 1 функцией (POST, REQUEST) будет только говнокодер, которому плевать на расширяемость приложения, также не беспокоясь за то что где-то фильтрация будет ему мешать.
3) Если нужна базовая фильтрация от SQLInj, то повторюсь она должна проходить непосредственно в классе для работы с БД через спец. placeholders-ы, дабы опять же в некоторых местах не мешать нам, сюда можно не только mysql_real_escape включить, но и классификацию placeholders-ов по типам данных.
Спустя 6 часов, 22 минуты, 37 секунд (20.04.2011 - 06:36) denizkin написал(а):
Raito-kun
Разработать к готовому фреймворку труда не составляет, написать свой с нормальной архитектурой сложно!
Я делал и с нуля, и к готовым фреймворкам, и сейчас работаю в компании программистом разрабатываю ERP - систему, была изначально CRM система щас уже в ERP переросла! Так, что я думаю ты полюбому меня ничему не научишь и не переубедишь, если ты говоришь слова вывод ЛЮБОГО ТЕКСТА htmlspecialchars, прости конечно, но всегда считал, что в базе содержатся ДАННЫЕ!
И также первое моё сообщение в данном топике было адресовано автору, а не тебе, где автор фильтрует имя пользователя, логни и e-mail при выводе непонятно зачем! Тобишь, какие данные у него могут быть логин, e-mail или имя пользователя? Непонятно какими, поэтому ему их надо фильтровать при реге пользователя, тобишь при вводе данных пользователем!
Для всех я бы лучше применил регулярные выражения, чтоб точно были нормальные имена и e-mail, так же подтверждения акка через мыло! И тогда на выходе ничего фильтровать уже не надо, в логине , имени и мыле будут нормальные данные которые будут корректно выведены и никак не навредят сайту!
Удачи, больше тебе что-то объяснять я не намерен, просто бесполезно это!
Разработать к готовому фреймворку труда не составляет, написать свой с нормальной архитектурой сложно!
Я делал и с нуля, и к готовым фреймворкам, и сейчас работаю в компании программистом разрабатываю ERP - систему, была изначально CRM система щас уже в ERP переросла! Так, что я думаю ты полюбому меня ничему не научишь и не переубедишь, если ты говоришь слова вывод ЛЮБОГО ТЕКСТА htmlspecialchars, прости конечно, но всегда считал, что в базе содержатся ДАННЫЕ!
И также первое моё сообщение в данном топике было адресовано автору, а не тебе, где автор фильтрует имя пользователя, логни и e-mail при выводе непонятно зачем! Тобишь, какие данные у него могут быть логин, e-mail или имя пользователя? Непонятно какими, поэтому ему их надо фильтровать при реге пользователя, тобишь при вводе данных пользователем!
Для всех я бы лучше применил регулярные выражения, чтоб точно были нормальные имена и e-mail, так же подтверждения акка через мыло! И тогда на выходе ничего фильтровать уже не надо, в логине , имени и мыле будут нормальные данные которые будут корректно выведены и никак не навредят сайту!
Удачи, больше тебе что-то объяснять я не намерен, просто бесполезно это!
Спустя 1 час, 46 минут, 23 секунды (20.04.2011 - 08:22) kirik написал(а):
Цитата (Raito-kun @ 19.04.2011 - 16:24) |
достаточно сказать свою точку зрения насчет предмета спора. |
Вижу только срач - никакого обоснованного спора.
_____________
Обмен Ukash на WebMoney