CSRF(Cross Site Request Forgery)의 약자로,사이트간 요청 위조를 뜻한다. 클라이언트(희생자)의 의지와 상관없이 공격자가 의도한 작업이 진행 되게끔 유도하는 해킹 방법이다.
이를 막기 위해 CSRF 토큰 검증을 진행한다.
CSRF방어가 필요한 요청(=쓰기/변경이 가능한 엔드포인트 및 메서드들) 마다 특정 토큰을 포함시켜서 요청하여, 서버에서 비교하는 방식이다.
pip install flask-wtf
1)
from flask_wtf.csrf import CSRFProtect
csrf = CSRFProtect(app)
2) Applicaiont factory 사용시
from flask_wtf.csrf import CSRFProtect
csrf = CSRFProtect()
def create_app():
app = Flask(__name__)
csrf.init_app(app)
WTF_CSRF_SECRET_KEY가 꼭 정의 되어 있어야 한다.
따라서 아래와 같이 정의한다. 실제로는 더 복잡한 secret key 필요.
예)
app.config['SECRET_KEY'] = 'secretkey'