你可以篡改Rails中签名cookie的cookie过期日期吗?

时间:2017-06-14 10:32:11

标签: ruby-on-rails ruby cookies

据我所知,一旦cookie作为回复发送(并且cookie包含过期日期),过期日期不会随请求一起发回,只会回复cookie内容。

因此,即使在Rails中签署了cookie,是否有可能只是篡改其到期日期并在未来设置远远超过它实际的范围?

2 个答案:

答案 0 :(得分:0)

是的,除非您提供额外的安全性,否则可能只会篡改Cookie的加密/签名Cookie的截止日期。

无论如何看到值是如何加密的,您总是可以向cookie值添加其他信息 - 例如。到期日期(并以数组形式存储整个值,例如,元素索引0是值,元素索引1是cookie到期日期,或者在该字符串中使用一些查询并拆分字符串以获取值) 。然后,在您的控制器中,将cookie值解析为数组并检查到期日期的值(例如,如果它应该已经过期,在这种情况下引发错误)并将cookie的到期日期设置回正确的非客户端的篡改价值。这样,每当您需要该cookie的值时,您始终可以检查cookie是否仍然存在或者是否已经篡改过期日期。

我认为你不需要经常这样做,它的应用是一个非常具体的控制器方法。当然,这是一种hackish方式,但这是确保cookie值和cookie失效日期都没有被篡改的唯一方法。

答案 1 :(得分:-1)

是的,您当然可以。

cookies.signed [:ssid] = {值:“,到期:Time.now + 30.minutes }或 cookies.signed [:ssid] = {值:“,到期时间:Time.now + 60.years }

此处的值可以是字符串或数组。 使用此功能,您可以将Cookie的过期时间设置为您想要的将来。