Rails:使用隐藏字段标签与金钱相关的参数是否危险?

时间:2014-01-16 20:20:40

标签: ruby-on-rails

我正在为在线商店创建结帐。当客户填写了他的运费和结算信息时,它会将他们带到订单摘要页面。这是我的动作控制器:

def order_summary
  @cart = current_or_guest_user.cart    
  @purchase = current_or_guest_user.incomplete_purchases.last

  if @purchase.shipping_method.uses_ups?
    products = @cart.cart_items.map(&:product)
    ups_shipping = UpsShipping.new(products: products, purchase: @purchase)
    @shipping_rate = ups_shipping.request_shipping_rate
  else
    @shipping_rate = UnitedStatesPostalServiceShipping.calculate_shipping_rate(sub_total: @cart.total)
  end
end

UpsShippingUnitedStatesPostalServiceShipping是我编写的非ActiveRecord模型,用于访问外部API以请求运费。它们不指向我数据库中的任何表。

他们在数据库中没有任何记录,我需要一种方法来在order_summary之后的请求中保留@shipping_rate响应的值并将其存储为@purchase.shipping_cost。我想要么只是将它存储在会话中,要么在视图中放置一个隐藏的字段。

在视图中使用<%= hidden_field_tag "purchase[shipping_cost]" @shipping_rate %>标记是否安全?或者将会议中的内容更安全?

或者是在下一次请求中再次点击UPS / USPS API的最佳选择?我认为再次点击API会使我的应用程序更加脆弱,这就是为什么我只想点击它并保存值。对此的想法?

0 个答案:

没有答案