2010-01-07 3 views
1

작은 CGI 응용 프로그램을 개발 중입니다 (C, CGIC, http://www.boutell.com/cgic/). 내 응용 프로그램은 임시 파일을 만들어야합니다. 사용자가 이미지를 업로드하면 저장되고 다양한 방법으로 수정되고 이 다시 사용자에게 표시됩니다.CGI - 임시 파일

임시 파일을 만들 때주의해야 할 사항은 무엇입니까?

수정 된 이미지가 다음 디스크에서 임시 파일을 제거하는 CGI 스크립트에 의해 동적으로 제공됩니다

같은

뭔가 : <html><head><title>here's your modified image</title></head><body><img src="cgi-bin/genimage.cgi?uid=5423423 /></body>

그러나 악의적 인 사용자가 이미지를 업로드하고 수정 된 이미지를 요청할 수 없었어 , 그래서 하드 디스크를 채우십시오.

주기적으로 사용하지 않는 파일을 제거해야합니까?

감사합니다.

+0

질문에 대한 답변을 얻은 것 같습니다. 예. 정기적으로 파일을 제거하십시오. 단일 연결/IP에서 얼마나 많은 파일이 왔는지 추적하십시오. 임계 값을 초과하면 IP가 몇 분 동안 끊어집니다. –

답변

1

저장 용량이 한정되어 있고 알 수없는 데이터가 들어오는 경우 저장할 수있는 데이터가 더 많을 때 수행 할 작업을 결정해야합니다. 그것은 어떤 식 으로든 일어날 것입니다. 무제한 저장 용량을 제공한다면 불가능할 경우 DoS가 발생합니다.

모든 전략은 아마 다음과 같은 두 가지 (3, 가능한 경우) 방법에 속하는 :

  1. 객실을
  2. 드롭을 만들기 위해 가장 오래된/최소 원하는 데이터를 드롭,

    워터 마크 (water mark) 이상 수신 데이터는 다시 낮은 워터 마크 아래까지 전체

  3. 일시 정지 들어오는 데이터를지고 피하기 위해

2와 3은 여전히 ​​새로운 스토리지를 찾을 필요가 있으므로 무언가를 삭제하거나 더 많은 스토리지가 필요합니다. 1은 자체 유지 관리가 가능하지만 새로운 쓰레기를 충분히 보내면 모든 유용한 오래된 데이터를 플러시 할 수 있습니다. 순위 시스템 (마지막 액세스, 가장 많이 액세스, 권한이 부여 된 사용자에 의해로드 됨, 그 조합 ...)을 생성하고 가장 중요하지 않은 항목을 삭제하는 것이 가장 균형 잡힌 방법 일 수 있습니다.

0

직접 응용 프로그램 디자인에 CGI를 사용하는 것은 의문의 여지가 있습니다. 즉, 웹 프레임 워크/응용 프로그램 엔진이 아닙니다. 나는 당신의 이미지 조작을 위해 자바를 사용하거나, 루아 또는 파이썬 등으로 그것을 포장 할 것을 제안 할 것이다.

CGI 실행 환경을 제한하고 감옥에 넣고 확인하려면 this post을 확인하고 here은 다른 것입니다.