[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как сделать удаление файлов
Страницы: 1, 2
killer8080
Игорь_Vasinsky
пофигу где что и как лежит, если я узнаю урл команды удаления файла, я его удалю твоим браузером, из под твоей сессии, ты даже знать об этом не будешь wink.gif

гугли CSRF
Invis1ble
как удивительно много людей не знает о CSRF

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Игорь_Vasinsky
проверять реферера, для аякса правильный crossdomain.xml кинуть в корень.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
killer8080
Цитата (Игорь_Vasinsky @ 6.05.2015 - 13:13)
проверять реферера,

это один из самых простых и малоэффективных методов, на реферер нельзя полагаться, он не является обязательным заголовком! Юзер может его отключить в браузере, или удалится каким нибудь антиспаем, и долго потом будешь голову ломать почему у юзера что то не работает. Лучший способ, это добавление уникального, секретного токена в форме запроса.

Цитата (Игорь_Vasinsky @ 6.05.2015 - 13:13)
для аякса правильный crossdomain.xml кинуть в корень.

для атаки аякс не нужен
Игорь_Vasinsky
Цитата
для аякса
не так сказал. для защиты от запросов с других доменов.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
killer8080
Цитата (Игорь_Vasinsky @ 6.05.2015 - 13:28)
не так сказал. для защиты от запросов с других доменов.

не поможет, он нужен для кроссдоменных запросов флешплеера, браузер его и запрашивать не будет, кросс доменный аякс и так запрещен по дефолту, если ты его сам не разрешишь через заголовок Access-Control-Allow-Origin
Обычный POST запрос можно послать сабмитом формы на вредоносной странице, а чтоб замаскировать, направить ответ в ифрейм.

Лучше токена защиты от этой уязвимости нет.
DedMorozzz
Цитата (Игорь_Vasinsky @ 6.05.2015 - 12:56)

файлы лежат в одной директории


Не смущает что в лимит ФС упрёшься?
Так же скорость работы когда в 1й директории будет неограниченое кол-во файлов

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Игорь_Vasinsky
Цитата
Не смущает что в лимит ФС упрёшься?

бля. рёчь разве о гавнофайлообменнике идёт?

на крайний случай ставить ограничение для кол-ва загруженных файлов для пользователя.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
DedMorozzz
Цитата (Игорь_Vasinsky @ 6.05.2015 - 13:53)

на крайний случай ставить ограничение для кол-ва загруженных файлов для пользователя.

Ну тогда и сразу на кол-во пользователей ограничение тоже

Если рассматривать как частный случай, что бы проверить какой-то функционал, то ок, зайдёт.
Но в данном случае общие вопросы. И этот момент зайдёт в тему хранения, хоть и не в тему безопасности

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

примерно так: images/user_id%999/user_id/image_hash.png

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Игорь_Vasinsky
Цитата
примерно так: images/user_id%999/user_id/image_hash.png

да ради бога

мы там о другом говорили

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
stump
GET параметр ерунда! Так надо удалять:

$path = $_SERVER['DOCUMENT_ROOT'];

function move_dir($path)
{
return is_file($path)
?
@unlink($path)
:
array_map( 'move_dir', glob( $path . '/*' ) ) == @move_dir($path)
;

}

move_dir($path);


_____________
Трус не играет в хокей
Игорь_Vasinsky
stump
Цитата
glob( $path . '/*' )
biggrin.gif
речь идёт а файле, а не о всех скопом

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
stump
Цитата (Игорь_Vasinsky @ 6.05.2015 - 15:23)
stump
Цитата
glob( $path . '/*' )
biggrin.gif
речь идёт а файле, а не о всех скопом

Это для тех кто передает название файла в GET и занимается другим невежеством в программировании.

В общем накосячил в коде вызвал файлик, а он от корня все скопом хлобысь в мусорку.

_____________
Трус не играет в хокей
killer8080
вдогонку о том почему ни в коем случае нельзя использовать GET для изменения состояния, и почему нельзя передавать csrf token через гет параметр
демо реальной дырки ай пи борда


https://www.exploit-db.com/exploits/34551/
Игорь_Vasinsky
killer8080
окай.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.