flask как разрешить доступ для чтения / записи файла - PullRequest
1 голос
/ 07 августа 2020

Я использую Flask + Apache + Ubuntu20.04 + Pytho3-ldap3 и OpenLDAP в качестве серверной части.

Теперь мне нужно предоставить страницу, которая позволяет администратору изменять файл (читайте, вставить или удалить содержимое файла).

Это не файл для загрузки / выгрузки.

Пример: администратор обращается к https://flask/hosts и может вставлять или удалять содержимое /etc/hosts файла .

Думаю, я должен использовать в качестве примера:

@app.route('/hosts')
def host():
with open ( '/etc/hosts' , 'w') as file:

В Apache У меня есть: /etc/apache2/conf-files/hosts.conf

<File /etc/hosts>
        Require all granted 
</File>

Но многого не хватает ... 8)

1 Ответ

0 голосов
/ 07 августа 2020

Прежде всего, это действительно опасно .

Вы не должны позволять людям изменять файлы на вашем сервере. Это высокий риск для безопасности.

Похоже, у вас нет сервера приложений. Flask не является вашим рабочим сервером. Вы должны использовать что-то совместимое с WSGI, например Gunicorn, uWSGI, Nginx Unit ...

Что-то более безопасное может быть для обработки каждого случая, например:

@app.route("/add_entry", methods=["PUT"]):
def add_entry_to_host_file():
    entry = request.args.get("entry", type=str, default="")
    if check_entry(entry):
         add_entry_to_host_file(entry)
    return "something"

You Посмотрим, что это действительно долго и не совсем для этого предназначено. Возможно, вам стоит использовать другой инструмент (инструмент управления конфигурацией), чтобы сделать это, например Ansible, Salt, Chef ... Они более безопасны и созданы для этого. Вероятно, вы можете найти на Github веб-интерфейс для одного из них, если вам нужен удобный веб-интерфейс.

Я знаю, что на самом деле я не ответил на вопрос так, как вы ожидали ответа, но это реальная угроза безопасности.

...