2010-05-28 2 views
1

Я хочу создать новостной портал (php) с минимальной силой mysql. : создать cron, получить данные из mysql и записать в php-файл. (Я не знаю, правильно ли это) Но могу ли я использовать xml вместо php-файла? Запись данных mysql в xml. Это безопасный способ? Каков наилучший способ? XML или php-файл?Запись таблиц Mysql в XML: проблема безопасности

alt text http://img541.imageshack.us/img541/4784/87392425.gif

Заранее спасибо

+0

Err, и где вы собираетесь хранить XML? На файловой системе, я думаю .. Перефразируйте свой вопрос, пожалуйста. – halfdan

+0

@halfdan; Ты прав. Я отредактировал мой вопрос. – 2010-05-28 08:51:22

+1

'хочу сделать сайт новостного портала (php) с минимальной силой mysql' сама идея довольно глупа. Не будьте дураком и не меняйте базу данных для текстового файла –

ответ

1

Позвольте мне начало, говоря, что MySQL является очень быстрым и очень безопасно. Я рекомендую создавать страницы с MySQL по запросу, большинство веб-приложений делают это, потому что это очень хороший подход. Чтобы сохранить ресурсы, вы можете кэшировать вывод с помощью Squid Reverse Proxy, и это очень часто встречается на сайтах с высоким трафиком. PHP APC также сократит потребление ресурсов, не жертвуя secuirty. Smarty's Caching system - также хороший подход с минимальным воздействием на безопасность.

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

$page='$title="'.$_GET['user_title'].'"'; 
file_put_contents("/var/www/page.php",$page); 

Атака против этого кода будет выглядеть следующим образом:

http://localhost/page_creater.php?user_title='; eval($_GET[backdoor]); /* 

Создание XML-файлов с помощью пользовательского ввода также опасно, потому что он открывает дверь для Advanced LFI Attacks. Однако аргумент счетчика заключается в том, что до тех пор, пока ваше приложение не будет обладать уязвимостями Local File Include, вам не придется беспокоиться. Но это не «глубокий» дизайн, потому что вы должны планировать неудачу.

Возможно реализовать что-то вроде обратного прокси-сервера Squid in php using ob_start(), однако ваши файлы по-прежнему создаются с данными, контролируемыми атакующим, и это опасно. Также не включайте() .html-файлы, которые невероятно глупы (см. Расширенные атаки LFI ...), лучший подход заключается в следующем: print(file_get_contents($file)). Мне нравится использовать .html-файлы с использованием .xml-файлов, потому что html не нужно обрабатывать, прежде чем вывести его пользователю. Использование xml-файлов в качестве хранилища данных - это расточительство ресурсов по сравнению с MySQL.

(Отказ от ответственности: Уязвимости были найдены в Smarty и кальмаров, и PHP, и Linux, и MySQL и Apache и .... все остальное, даже StackOverflow;)

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