2015-03-30 2 views
-4
from flask import Flask 

app = Flask(__name__) 

@app.route('/') 
def index(): 
    return 'FRIENDS' 
@app.route('/home') 
    def home(): 
return 'BARBAD, PARTI' 

if __name__ == '__main__': 
    app.run(debug=True) 

После поиска Google я пришел знать, что если опция отладки включена, то нет необходимости перезагружать интерпретатор вручную после каждого изменения в мой код .. Но я также читал в колбах документации:Какая потребность в опции отладки в колбе? Почему мы должны избегать этого после завершения веб-приложения?

Несмотря на то, что интерактивный отладчик не работает в forking средах (что делает практически невозможным использование на производственных серверах ), он по-прежнему позволяет выполнять произвольный код. Это делает основным риском для безопасности и поэтому его никогда не следует использовать на производственных станциях .

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

+2

«он по-прежнему разрешает выполнение произвольного кода» Произвольный пользовательский код = разрывное отверстие безопасности. Это относится к live Python REPL, включенному на странице с ошибкой. Если конечный пользователь каким-то образом получил рабочую страницу ошибки отладки, они могли бы буквально написать код Python и выполнить его на сервере. – jpmc26

ответ

1

Почему требуется режим отладки?

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

Почему вы не должны использовать его в производстве?

  1. Вы не хотите какой-либо один, чтобы увидеть свой отслеживающий, должен ли быть ошибка. Мы показываем только, что это 500 или 404, и что-то не так с их запросом или сервер не смог обработать их запрос. Вы не хотите показывать это, потому что небезопасно давать кому-либо представление о дырах в вашем приложении, потому что они могут его использовать.

  2. Вы никогда не хотите, чтобы кто-либо выполнял код на вашей машине, кроме вас самих или кого-то, кому вы доверяете. Если злоумышленник может выполнить произвольный код на вашем сервере, он сможет сделать плохие вещи!

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

from flask import Flask 

app = Flask(__name__) 

@app.route('/') 
def index(): 
    return 'FRIENDS' 
@app.route('/home') 
    def home(): 
return 'BARBAD, PARTI' 

if __name__ == '__main__': 
    app.run(debug=os.environ.get('APP_ENV', 'development') == 'development') 

и не забудьте установить 'APP_ENV' производства в производственной среде.

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