2017-05-07 1 views
1

이것은 Flask와 Python을 사용하는 첫 번째 응용 프로그램입니다.Flask에서 URL 매개 변수의 유효성을 검사하는 방법

아래 URL 형식을 사용하여 Arduino에서 Pythonanywhere 서버 인스턴스에서 실행되는 플라스크 응용 프로그램에 POST 요청을 보냅니다.

유효한 POST 요청 3 I URL은 어떤 형태의 URL을 확인하여 추가 처리로부터 요청을 차단해야 http://voyagers.pythonanywhere.com/senddata?node=1234&lat=18.5580&lng=73.8075

파라미터. 인증되지 않은 POST 요청으로부터 앱을 보호하기를 원합니다. 아무것도 3 개 이상의 URL 매개 변수 http://voyagers.pythonanywhere.com/senddata?node=324&lat=18.5580&lng=73.8075&a=c&a=d

어떻게 플라스크에이를 수 있습니다

는 다음과 같이이 말?

승인되지 않은 요청으로부터 애플리케이션을 보호하는 데 사용할 수있는 더 좋은 방법이있는 경우 제안하십시오.

+1

요청 권한 부여와 해당 요청의 쿼리 매개 변수 수 사이에 어떤 연결이 있습니까? – jonrsharpe

+0

@jonrsharpe Authorization 여기서, 하드웨어 장치 (arduino 노드)가 위에서 언급 한 것처럼 3 개 이상의 URL 매개 변수로 구성된 POST 요청을 보내는 지 말하십시오. 그런 요청을 처리하고 싶지 않습니다. 더 많은 오류 검사를 해보십시오! (P.S : 적절한 용어를 용서해주십시오, 초보자부터 앱 개발에 이르기까지) –

+0

예를 들어 보셨습니까? http://stackoverflow.com/q/29568540/3001761? 입력을 검증하는 것은 애플리케이션 보안과 동일한 것이 아니므로 달성하려는 작업이 무엇인지 명확하게 알 수는 없습니다. 쿼리 매개 변수 사전에있는 유일한 키가'node','lat' 및'lng'인지 확인하고 싶다면 * 쓰려고 했습니까? * – jonrsharpe

답변

2

당신은 매개 변수의 유효성을 확인하고 URL로 전환하고자하는 경우 자동으로 오류가 발생하는 flask를 얻을 수는 경로에 (URL에 '?'기호 다음 즉, 아무것도) 매개 변수 것은 (즉, 어떤 매개 변수가 Path HTTP 헤더 또는 URL의 첫 번째 '/'다음에 '?'다음에 오는 부분에 있음).

귀하의 예는 다음과 같이 수 : http://example.com/post/1234/-11.45/21.34

당신은 여기에 대한 자세한 내용을 찾을 수 있습니다 : http://flask.pocoo.org/docs/0.12/quickstart/#variable-rules

@app.route('/post/<int:node_id>/<float:lat>/<float:lng>', methods=['POST']) 
def process_post_request(node_id, lat, lng): 
    # do some work 
    return your_result 

그런 다음 당신은 다음과 같은 예를 들어 볼 것 URL에 대한 요청을 보낼 수 있습니다

액세스 보안을 위해 다음 예제 스 니펫 중 일부를 사용할 수 있습니다. http://flask.pocoo.org/snippets/category/authentication/

HTTPS에만 액세스를 제한하고 방금 놀고있는 경우 기본 인증을 사용하는 것이 좋습니다. 이것은 여기에 설명 된 간단한 데코레이터로 할 수 있습니다. http://flask.pocoo.org/snippets/8/

브라우저에 사용자 이름과 암호를 묻는 메시지가 표시되며 브라우저는 세션 기간 동안 기억할 것입니다. 또는 헤더의 base64 인코딩 된 양식으로 사용자 이름과 암호를 설정할 수 있습니다. https://en.wikipedia.org/wiki/Basic_access_authentication

+0

감사합니다 Grepe !. 위에서 한 가지 해결책을 시도해 볼 것입니다. '?'뒤에 매개 변수로 수행 할 수있는 유사한 내용이 있습니까? URL에? URL을 'node_id/lat/long'으로 수정하는 대신? –

+0

@ balaji 제 지식에는 URL 매개 변수 유효성 검사가 플라스크에 내장되어 있지 않습니다. 당신은 직접 작성해야합니다. URL 매개 변수는 무료이며 쉽게 변경할 수 있고 추가하기도 쉽습니다. 추적 목적으로 (거의 모든 배너 광고를 클릭하고 URL을보십시오). – grepe

관련 문제