Рассмотрим простую систему загрузки файлов, написанную на php. Пользователь имеет доступ только в панели администратора. (Не FTP). Он может изменить опцию папки с 707 до 755 для обеспечения безопасности. Как это сделать? Можем ли мы сделать это из сценария загрузки? Если да, это безопасное приложение?Файловая система и безопасность (PHP)
ответ
Для этого вы можете использовать chmod. У каждой операции с файловой системой есть риск, поэтому учтите, что пользователь может попытаться изменить права доступа другого файла, чтобы у вас есть для дезинфекции ввода.
bool chmod ( string $filename , int $mode )
Попытки изменить режим указанного файла, приведенного в режиме.
Похоже, вы не понимаете, как работает веб-сервер. Он имеет только один system user
и нет необходимости изменять какие-либо разрешения для site users
.
Для реализации функции ACL, одна нужна база данных для хранения пользователей и прав, а также некоторую ручной реализации методы загрузки, простые один (собственные заголовки + ReadFile()) или один из более сложных решений, как Nginx-х x_accel_redirect
Пользователь может загрузить изображение. Как насчет папки chmod в этом случае? Папка всегда может быть в 707? А как насчет безопасности? – Felicita
@ Разрешения должны быть установлены только для того, чтобы сайт работал. И зависит от настройки сервера, а не от мыслимых «проблем безопасности». –
Мы не можем делать при загрузке скрипта, это не безопасный способ, чтобы любой мог его взломать. Я могу сделать только в файл, загружающий код страницы, предоставляя chmod через ftp.
This скриптов удаляет весь грязный материал, а также проверяет белый список файлов из directory.If находится файл существует в директории, то результат будет истинными в противном случае хакеров
function WhitePage($page) {
$info2 = apache_lookup_uri('src/index.php?p=' . $page);
list($arg, $val) = explode("=", $info2->args);
$myrequest = basename(htmlspecialchars_decode($val));
return $myrequest;
}
function Read_Dir($dir, $array = array()) {
$dh = opendir($dir);
$files = array();
while (($file = readdir($dh)) !== false) {
$flag = false;
if ($file !== '.' && $file !== '..' && !in_array($file, $array)) {
$files[] = trim($file);
}
}
return $files;
}
function WhiteList($page = null) {
$info2 = apache_lookup_uri('src/index.php?p=' . $page);
list($arg, $val) = explode("=", $info2->args);
// basename from the std class
$myrequest = basename(htmlspecialchars_decode($val));
$myrequest = trim($myrequest . '.php');
//pathinfo from the std class
$path = pathinfo($info2->filename);
// get the files array
$whitefiles = Read_Dir($path['dirname']);
if (in_array($myrequest, $whitefiles, true)) {
$res = 1;
} else {
$res = 0;
}
return $res;
}
// this is solution of this kind of the problems
//$p='index.php?p=../../../../../../../../etc/passwd%00index.html';
$p = '../../../../../../../../etc/passwd%00index.html';
$p = WhitePage($p);
$result = WhiteList($p);
if ($result) {
echo 'ok';
} else {
echo 'Die ,You evil hacker';
}
. Эти скрипты удаляют все грязные вещи, а также проверяют список белых файлов из каталога. Если файл существует в каталоге, то результат будет истинным, иначе попытка взлома –
hi lehal2, вы должны отредактировать свой ответ, а не добавлять комментарий, таким образом, это более очевидно для людей, которые видят ваш ответ дальше. –
- 1. iOS Безопасность: веб-сервер и файловая система
- 2. faking файловая система/виртуальная файловая система
- 3. Логическая файловая система vs Физическая файловая система
- 4. Файловая система и локаль
- 5. py2exe и файловая система
- 6. Файловая система файловой системы
- 7. Встраиваемая файловая система и sqlite
- 8. ACE библиотека и файловая система
- 9. Файловая безопасность Spring
- 10. Файловая безопасность на Wordpress
- 11. ASP.NET Trace.axd Файловая безопасность
- 12. файловая система vs url в php
- 13. Unix файловая система посмотреть
- 14. Легкая файловая система
- 15. Распределенная файловая система Hadoop
- 16. Конфигурационная файловая система libusb
- 17. Файловая система TreeView
- 18. Django файловая система
- 19. Meteor файловая система
- 20. Файловая система с тегами
- 21. Файловая система Toy OS
- 22. Boost файловая система итератор
- 23. Общая интернет-файловая система
- 24. BigData - Hadoop (Файловая система)
- 25. Трассировка Журналированная файловая система
- 26. Файловая система TreeView
- 27. файловая система с C++
- 28. Простая виртуальная файловая система
- 29. Phonegap Файловая система 'undefined'
- 30. Файловая система Статистика
Что пользователь может делать вы ссылаетесь? Владелец сайта или пользователь сайта? –
Последний номер в chmod - это глобальный доступ, имеющий 7 или 5 дает каждому пользователю доступ к вашим файлам. Вам нужно chmod 700 и не следует позволять вашему другу давать вам рекомендации по безопасности. – rook