безопасное хранение HTML в MySQL?
Посоветуйте, как безопасно хранить HTML. Допустим, я хочу создать колонку новостей, причем текст новости должен быть оформлен с помощью HTML-тэгов. Я вижу два варианта:
1) В MySQL хранить имя HTML-файла с текстом новости, а сам HTML-файл загружать через специальную форму, а потом с помощью PHP выводить его в колонку новостей.
2) Хранить текст новости со всеми тэгами HTML в самой базе данных. Только не знаю, как это сделать безопасно?
Заранее благодарен за любую помощь новичку в программировании...
Михаил.
Все очень просто. PHP имеет функцию mysql_escape_string(), которая "обезопашивает" любую строку от системных символов.
Да, но тут же возникает сразу XSS дырочка:). Защита должна быть комплексной. Есть несколько вариантов.
1. Использовать что-то типа BBcode и при выводе новостей заменять их на HTML аналоги... Согласен, накладно.
2. ИМХО самый лучший. Заменять теги при вводе на BBcode, только это делать надо именно при вводе, а не заменять это после отправки формы. Далее рубишь все теги htmlspecialchars(), проходишься выше сказанной mysql_escape_string(), после этого заменяешь весь Bbcode на HTML аналог и заносишь в БД. Всё, радуешься жизни.
PS ссори за оффтоп. Товарищи, а самый важный топ "Безопасное PHP программирование" что, уже забросили? :{ :???:
А что про безопасность еще хочется? Можем продолжить )
Нету никакой дырочки. Эта функция полностью обезопашивает строку, какой бы она ни была.
А что про безопасность еще хочется? Можем продолжить )
Хоть и оффтоп, но почему бы и нет?:).
<script>location.href=http://shaelf.ru</script> если занести туда, то что сделает? Тут речь идёт именно о HTML коде :)
Хоть и оффтоп, но почему бы и нет?:).
<script>location.href=http://shaelf.ru</script> если занести туда, то что сделает? Тут речь идёт именно о HTML коде :)
он спокойно залезет в БД и вылезет из нее. SQL запрос не пострадает.
он спокойно залезет в БД и вылезет из нее. SQL запрос не пострадает.
Запрос нет, а вывод?
Запрос нет, а вывод?
Вы ничего не говорили про вывод (см сабж).
Вы ничего не говорили про вывод (см сабж).
Не хотелось бы филосовствовать..., но
. Хотя про вывод он не чего и не говорил... Можно конечно списать на неправильный вопрос... Хотя это может быть ответом на ещё один, пока не заданный:).
Да и ещё
"Вы" - это я или мы вдвоём? :)
Я подумал, что это Ваша тема, сорри )
Очевидно, что ему надо было как-то запихнуть спецсимволы в мискль строку, меня и удивило некое "расширение" темы.
Я подумал, что это Ваша тема, сорри )
Между тем не видно хозяина тему... Аууу, отзовись.
Между тем не видно хозяина тему... Аууу, отзовись.
Я здесь! =)
Итак, что мне нужно:
Хочу сделать колонку новостей с помощью PHP и MySQL. При этом хочу, чтоб каждая новость была оформлена с помощью HTML-тэгов
(в т.ч. картинка). Вот и интересуюсь, как это сделать? Поискал скрипты в инете, но только они для меня довольно сложные - разобраться в чужих кодах мне пока трудновато...
Я здесь! =)
Итак, что мне нужно:
Хочу сделать колонку новостей с помощью PHP и MySQL. При этом хочу, чтоб каждая новость была оформлена с помощью HTML-тэгов
(в т.ч. картинка). Вот и интересуюсь, как это сделать? Поискал скрипты в инете, но только они для меня довольно сложные - разобраться в чужих кодах мне пока трудновато...
То, что сказанно выше тебе понятно?
То, что сказанно выше тебе понятно?
понятно то оно - понятно, только вот опыта не хватает... А не подскажите, где можно поподробнее про BBcode почитать?
Спасибо за помощь,
Михаил.
понятно то оно - понятно, только вот опыта не хватает... А не подскажите, где можно поподробнее про BBcode почитать?
Спасибо за помощь,
Михаил.
Я образно обозвал это BBcode'ом. Наглядно если, то допустим есть тэг , а делаешь кнопочку которая будет вставлять [bэ] и закрывать это [/bэ] (только "э" убери, а то он форум думает, что это для него:)), потом (после ввода и проверки) просто меняешь это на нормальный и вот и всё.
Вот тебе для затравки небольшой кодик. Разберись с ним и ты поймёшь, что на самом деле всё просто:)
function add() {
var url = prompt("адрес ссылки");
var name;
if(url) {
name = prompt("название ссылки");
}
document.n.news.value = document.n.news.value+"<a href=\""+ url + "\" target=\"_blank\">" + name + "</a>";
}