2014-12-26 1 views
1

내 사이트에 파일을 업로드하려면 "기본"모드에서 <p:fileUpload> 구성 요소를 사용하고 있습니다. <p:fileUpload>은 파일 수와 각 파일 크기를 제한 할 수 있지만 모든 페이지의 총 파일 크기를 제한하는 방법을 찾을 수 없습니다.한계 총계 : fileUpload 임시 파일 크기

나를 귀찮게하는 상황이 여기 있습니다. 공격자는 동일한 페이지의 여러 인스턴스에서 많은 매우 느린 업로드를 시작할 수 있습니다. 한계를 1MiB 파일로 설정하더라도 원하는만큼 공간을 사용할 수 있습니다. 이로 인해 다른 서비스가 방해받을 수 있습니다.

어떻게 이것을 피할 수 있습니까?

답변

0

첫 번째 솔루션은 captcha입니다. 업로드를 시작하기 전에 captcha 검증이 필요합니다. Primefaces는 사용할 준비가되었습니다. 구성 요소 : http://www.primefaces.org/showcase/ui/misc/captcha.xhtml

두 번째 솔루션은 백업 빈에서 유효성 검사를 수행하고 있습니다. @SessionScope 빈을 가지고 있다고 가정하면, 매개 변수를 정의하고 내부에 업로드 된 데이터의 전체 크기를 쓸 수 있습니다. 사용자가 업로드 한 내용을 업로드 할 때마다 업로드 할 때마다 사용자가 허용 된 날짜를 초과했는지 확인하십시오.

+0

Captcha는 좋은 생각이지만 공격자가 충분히 해결할 수있는 한 공격은 여전히 ​​가능합니다 (상대적으로 저렴한 가격으로 서비스를 제공 할 수 있습니다). 백킹 빈을 사용하는 것은 해결책처럼 보입니다.하지만 사실을 감지 할 방법을 찾을 수 없으며 업로드가 시작된 것입니다. –

+0

더 정확하게 말하면'onstart' 콜백이 있지만 클라이언트 측에 있으므로 쉽게 수정할 수 있습니다. –