파일 업로드 기능으로 레일즈 애플리케이션을 만들고 인증 된 사용자 만 파일을 업로드 할 수 있습니다. 파일 업로드 양식은 회원 전용 영역에 있지만 업로드 URL을 잡고 스크립트에서 데이터를 게시하기가 쉽기 때문에 인증되지 않은 파일 업로드 제출에 대해 우려하고 있습니다. 물론 업로드는 거부되지만 데이터 전송이 완료되고 귀중한 대역폭이 낭비 된 후에야 거부됩니다. 전체 양식을 내 서버에 제출하기 전에 인증되지 않은 파일 업로드를 거부하려면 어떻게합니까? 스크립트 나 CURL을 사용하여 사용자를 제어 할 수 없기 때문에 일종의 서버 측 솔루션이 필요합니다. 나는 어떤 의견을 주셔서 감사합니다. 감사.데이터 전송이 완료되기 전에 파일 업로드를 거부하는 방법은 무엇입니까?
답변
이 작업이 실행되기 전에 (upload_form_action가 업로드 양식 페이지 인 및 upload_action 파일을해야
allowed_to_upload을 접수에 페이지되고 있습니다 .. before_filter 실행 무엇을 할 수 있는지에 대한 간단한 의사 코드는 파일을 업로드하는 데 필요한 true/false를 반환 등 도우미/기능/그것이 거짓이라면, 그것은, (403)는 무단 렌더링 그렇지 않으면 단지에 날림됩니다 수.
before_filter :check_upload, :only => [:upload_form_action, :upload_action]
protected
def check_upload
render :nothing, :status => 403 and return unless allowed_to_upload
end
I을 현재 사용자가 로그인했는지 여부를 확인하는 비슷한 before_filter 설정을 가지고 있습니다. 사용자가 로그인하지 않으면 사용자를 리디렉션합니다. 귀하의 코드를 시도했지만 파일이 완전히 업로드 된 후 인증이 항상 수행됩니다. html 소스 (진위성 토큰 및 모두 포함)에서 양식을 잡아 내고 인증 정보가 들어있는 쿠키없이 파일 업로드를 시도하는 정통한 사용자를 상상해보십시오. before_filter 인증은 사용자가 로그인했지만 실제 업로드가 아니기 때문에 파일의 추가 처리를 거부합니다. – SimKo
이 문제는 업로드가 완료 될 때까지 요청이 Rails에서 처리되지 않는다는 것입니다. 그러나, 나는 어떤 페이지에 1GB 업로드 요청을 보낼 수 있으며, 그것에 대해 많은 것을 할 수 없다고 생각합니다. 이걸 보셔야합니다. – nvez
그래, 나는 이것이 사실일지도 모른다는 사실을 암시했다. 정말 필요한 것은 파일 업로드가 끝나기 전에 쿠키를 확인한 다음 업로드를 종료하는 것입니다. 완전히 완료되기 전에 게시물을 처리 할 수 있는지 궁금합니다. 쿠키는 양식 데이터보다 먼저 전송되므로 양식 데이터가 서버로 스트리밍되는 동안 인증 데이터가있는 쿠키가 있는지 여부를 확인하기 위해 게시물을 검사 할 수있는 기회가있을 수 있습니다. 아마도 일부 랙 사용자 정의가 있습니까? 나는 웹 서버가 그것을 전달하기 전에 전체 게시물을 버퍼링하는지 궁금하다. – SimKo
- 1. 장고에서 업로드가 완료되기 전에 업로드를 거부하는 방법은 무엇입니까?
- 2. POST 업로드가 완료되기 전에 리디렉션
- 3. 파일 업로드를 디버깅하는 방법은 무엇입니까?
- 4. 바이러스를 검사하기 전에 파일 업로드를 저장해야합니까?
- 5. 노드가 완료되기 전에 appendChild가로드 되었습니까?
- 6. PHP를 사용하여 파일 업로드를 제한하는 방법은 무엇입니까?
- 7. uploadify에서 비동기 파일 업로드를 처리하는 방법은 무엇입니까?
- 8. Mechanical Turk에서 파일 업로드를 수락하는 방법은 무엇입니까?
- 9. 삭제 트리거 전에 삭제 구문을 거부하는 방법은 무엇입니까?
- 10. 이전 함수가 완료되기 전에 코드에서 PHP가 계속됨
- 11. Task.Factory.FromAsync (BeginRead, EndRead)가 완료되기 전에 전체 데이터 블록을 읽습니까?
- 12. CAS로 Assert를 거부하는 방법은 무엇입니까?
- 13. 파일 업로드를 사용하는 Ajax
- 14. 파일 전송이 이상한 문자를 반환합니다
- 15. Application.Run이 완료되기 전에 .NET 응용 프로그램을 삭제하십시오.
- 16. VBA의 작업이 이전 작업이 완료되기 전에 실행되는 이유는 무엇입니까?
- 17. 복사 할 수 있도록 파일 전송이 완료되었는지 확인하는 방법
- 18. 브라우저가 $ .ajax 요청이 완료되기 전에 링크로 이동합니다.
- 19. 버튼의 동작이 완료되기 전에 actionSheet를 닫습니다.
- 20. 로드가 완료되기 전에 ie8 페이지가 중지됩니다.
- 21. 레이아웃이 FF로 완료되기 전에 양식 필드가 표시됩니다.
- 22. 서브 루틴이 완료되기 전에 Javascript 함수가 반환됩니다.
- 23. animain이 완료되기 전에 다음 행을 표시하는 방법
- 24. 애니메이션이 완료되기 전에 fadeOut 콜백이 수행됩니다.
- 25. PHP가 이미지 업로드를 거부하는 경우가 있지만 이유를 파악할 수 없습니다.
- 26. 브라우저를 종료 한 후 파일 업로드를 계속할 수 있습니까?
- 27. Django에서 PUT 요청을 통해 파일 업로드를 처리하는 방법은 무엇입니까?
- 28. 파일 업로드를 테스트하는 JWebUnit
- 29. 모든 파일 업로드를 암호화하는 GnuPG
- 30. WebDev : 다중 파일 업로드를 수행하는 가장 좋은 방법은 무엇입니까?
어쩌면 로그인을 보장하기 위해 before_filter이? – Shreyas