2010-11-23 3 views
0

Я создаю сайт для обзора, который позволит пользователям отправлять отзывы, которые будут храниться в базе данных MySQL. Отзывы будут рассмотрены мной вручную для контента, а затем отображены на моем сайте. Вот моя пользовательская функция для очистки данных (каждый элемент на форме передается этой функции):Мнение о безопасности моей формы submit/display

function cleanDataForDB($data) { 
$data = trim(htmlentities(strip_tags($data))); 

if (get_magic_quotes_gpc()) 
    $data = stripslashes($data); 

$data = mysql_real_escape_string($data); 

return $data; 

}

Я не написал скрипт для отображения отзывов, как только они были утверждены но я планировал просто передать все поля из моей таблицы MySQL через функцию html_entity_decode() и записать их в HTML моей страницы.

Кто-нибудь видит какие-либо очевидные дыры в безопасности в этом плане? Мне кажется, это очень безопасно, но это первый сайт, который я создал, который позволяет данные, передаваемые пользователем, поэтому я хочу быть уверенным, что я не оставлю себя уязвимым.

Спасибо!

+0

Коррекция магических кавычек должна выполняться один раз и в центральном месте. См. Руководство для чего-то типа `if (get_magic_quotes_gpc()) {$ _POST = array_map (" stripslashes ", $ _POST); $ _GET ...} ` – mario 2010-11-24 00:42:06

ответ

1

Вы должны выполнить сбой данных по базам данных перед тем, как поместить его в БД, и сделать HTML-выход при вытаскивании. Таким образом, вы можете обрабатывать HTML-сообщения в сообщениях пользователя в будущем, не найдя «oops, я искал его».

Лучший способ избежать данных для вставки - использовать PDO.

Для отображения данных, возможно, достаточно htmlentities.

+0

` htmlspecialchars` часто лучше, но также * зависит * правильный параметр charset для эффективности. – mario 2010-11-24 00:44:31

+0

Я не знаком с PDO, и руководство php.net не очень полезно по этой теме. Вы говорите, что это то, что я должен использовать в дополнение к пользовательской функции, которую я уже использую? Я полагаю, что PDO обеспечивает более надежную безопасность? – Chris 2010-11-24 00:59:57

0

Я согласен с Borealid, но хотел бы добавить, что вы можете использовать preg_replace(), чтобы полностью удалить скрипты JavaScript, а не просто удалять теги из него.

Смежные вопросы