1

ユーザーが写真を表示する必要があるアプリケーションを作成していますが、サーバー リソースが非常に限られているため、サーバーにアップロードすることはできません。

だから私は3つの主要な質問があります:

1. 写真の URL を正しく検証するには? 少なくとも正規表現で検証できますが、ファイルの末尾を確認する必要があります。

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

2. セキュリティの問題? XSS?

私が作成時に画像を検証したとしても、ハッカーはいつでも画像を悪意のあるものに置き換えることができます。

3. API を備えた無料のアセット ストアがあるかもしれません。

4

1 に答える 1

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 を備えた無料のアセット ストアがあるかもしれません。

私が知っているものはありませんが、ラックスペース クラウド、Amazon s3 ホスティングはかなり安価です。一部の画像アップロード プラグインはこれら 2 つをサポートしているため、少なくとも時間を節約できます。

于 2010-05-21T20:12:10.923 に答える