2010-05-21 5 views
1

사용자가 사진을 보여줘야하는 응용 프로그램을 작성하고 있지만 서버 리소스가 매우 제한되어 있으므로 서버에 업로드 할 수 없습니다.응용 프로그램에서 사용자가 편집 가능한 이미지 URL을 사용합니다. 보안 문제

1. 어떻게 제대로 사진의 URL을 검증하기 :

그래서 세 가지 질문이?

`validates_format_of :photo_url, :with => URI::regexp(%w(http https))` 

2. 보안 문제 :은 적어도 나는 그러나 나는 파일 종료를 확인하기 위해 필요, 정규 표현식으로 유효성을 검사 할 수 있습니다? XSS?

내가 만든 순간에 사진을 확인해도 해커가 이미지를 악의적 인 것으로 바꿀 수 있습니다.

3. API가있는 무료 자산 보관소가 있습니까?

답변

1

1. 사진 URL의 유효성을 올바르게 검사하는 방법은 무엇입니까?

당신은 URL의 형식을 검증하는 플러그인을 사용하거나 그것을 자기 작성할 수 있습니다

validates_each :photo_url do |record, attr, value| 
    begin 
     uri = URI::parse(value) 
     record.errors.add(nil, 'Sorry, you may only use http/https links') if (uri.class.to_s =~ /URI::HTTPS?/).nil? 
     record.errors.add(nil, 'The url must point to a picture') unless value =~ /\.(png|jpg|jpeg)$/i 
    rescue URI::InvalidURIError 
     record.errors.add(nil, 'The format of the url is not valid') 
    end 
    end 

2. 보안 문제? XSS?

텍스트를 이스케이프 처리하는 동안 뛰어난 보안 문제는 없습니다. <%=h image_tag obj.photo_url %>은 안전합니다. 사용자는 100MB 이미지를 사용하여 모든 방문자의 속도를 늦출 수 있습니다.

3. API가있는 무료 자산 보관소가 있습니까?

내가 아는 것이 없지만 랙 공간 클라우드, 아마존 s3 호스팅은 매우 저렴합니다. 일부 이미지 업로드 플러그인은이 두 가지를 지원하므로 적어도 시간을 절약 할 수 있습니다.

관련 문제