1

我正在编写一个应用程序,要求用户显示他们的照片,但是由于我的服务器资源非常有限,我不能让他们将其上传到服务器。

所以我有三个主要问题:

1. 如何正确验证照片 URL?至少我可以使用正则表达式进行验证,但是我需要检查文件结尾:

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

2. 安全问题?跨站脚本?

即使我在创建时验证图片,黑客也可以随时将图片替换为恶意内容。

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. 安全问题?跨站脚本?

只要您对文本进行转义,就没有任何突出的安全问题。 <%=h image_tag obj.photo_url %>是安全的。请记住,用户仍然可以使用 100MB 的图像,这会减慢每个访问者的速度。

3. 可能有免费的带有 API 的资产商店?

我不知道,但是 rackspace cloud,amazon s3 托管非常便宜。一些图片上传插件支持这两个,所以你至少可以节省一些时间。

于 2010-05-21T20:12:10.923 回答