首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将敏感和较短的数据传递到外部链接

将敏感和较短的数据传递到外部链接
EN

Stack Overflow用户
提问于 2019-02-21 04:34:50
回答 1查看 80关注 0票数 0

我最近想开始在我的网站上实现API,但是我遇到了一些关于验证的问题,因为我不知道如何用Rails正确地发送JSON数据。我过去曾使用过一些API和JSON,但这是我第一次同时使用这两个API和JSON,而且我在RoR方面的经验仍然缺乏。

我的第一反应是将参数连接到url上,在看到API中一个更积极(尽管还不完整)的JSON响应之后,我认为我走在正确的轨道上,但在没有得到成功的响应之后,我开始深入研究我所发送的内容,这时我注意到了两个问题。

第一个问题是,URL中有一些敏感信息,比如我的clientID,关于购买的信息,比如价格和描述,使用MD5加密的秘密密钥和一些加密盐,但是根据文档,它是安全的,只是为了与服务器接收的信息进行比较,所以总的来说,我并不太担心会泄露这类信息。尽管如此,我还是想改进我的代码,并尽可能保护更多的信息。

我的第二个问题更重要,我注意到由于url参数中的空间有限,所发送的信息不完整。

就在那时,我知道我做错了什么,所以我开始寻找替代方案,最好是在帖子上回复,但是我仍然不知道如何正确地发送参数,而当我尝试使用表单时,信息仍然存在,更糟糕的是,我发送的参数在另一端似乎是空的,与我以前的尝试不同,所以我开始更深入地挖掘它。

然后,我发现link_to助手可以发送参数,但是经过一些测试之后,我发现要用rails将参数发送到外部站点,建议的方法是将参数连接到url中,所以我返回了一个完整的循环。

因此,我的问题是,您如何在rails中不使用表单(因为以前的所有信息都是在以前的表单中填写)的情况下,将参数发送到外部网站(最好是尽可能安全地保存所有信息)?

虽然我以前使用过API和JSON,但它们仍然是我不太习惯使用的主题,在某种程度上,我仍然在RoR中学到了很多东西。

这是给我带来最大结果的代码(真正的代码看起来有点不同):

我的控制器order_controller.rb

代码语言:javascript
复制
def confirm_order

  #Here I group all the parameters I'll need

  @payment_params = []
  description = "create_"+ @order.name.gsub(' ','_')
  device_info = "WEB"
  currency = @order.currency
  fee =  @order.price
  #this was to concatenate the url, previouly I had the name of each parameter and the "&" taken into account, the response was different as I added each.
  @payment_params << description << device_info << currency << fee
end

在我看来,confirm_order.html.erb就像

代码语言:javascript
复制
<a href= <%="https://payexample/something/order?"+ @payment_params%> >Confirm order</a>

任何见解都是受欢迎的,但现在我真的不知道如何处理这个问题,因为我已经用尽了我所学到的一切。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-21 06:01:37

我有点不明白你的UI是什么样子,但我会把所有这些信息从链接中删除,并确保在一篇文章中进行确认(因为一些浏览器预先加载链接,如果您将其作为链接保存,可能会导致意外购买)。相反,我会使用button_to助手。

我不知道您是如何跟踪订单的,无论是在数据库中还是会话中。因此,您可能需要稍微修改一下,才能通过正确的参数。

to

代码语言:javascript
复制
<%= button_to('Confirm order', action: 'confirm_order') %>

然后,在您的confirm_order操作,您可以重定向到支付网站,而不是把所有的机密信息在页面上的所有时间。如果有人在监视网络流量,他们会很快地在标题中看到它,但是它不太容易被发现,并且在页面上有一个链接,您可以在一个新的选项卡中多次打开它。

代码语言:javascript
复制
def confirm_order
  #Here I group all the parameters I'll need

  @payment_params = []
  description = "create_"+ @order.name.gsub(' ','_')
  device_info = "WEB"
  currency = @order.currency
  fee =  @order.price
  #this was to concatenate the url, previouly I had the name of each parameter and the "&" taken into account, the response was different as I added each.
  @payment_params << description << device_info << currency << fee

  redirect_to("https://payexample/something/order?#{@payment_params}")
end

我不太清楚你想要那个重定向的网址是什么。这取决于外部站点。如果需要使用querystring参数,则可以对键和值进行散列,并使用to_query方法将其转换为查询字符串。

query

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54799310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档