Rails 反斜杠 unescape post 参数

Rails backslash unescape post param

我有一个 API 端点需要通过 POST 请求接收一些数据。这些数据已签名,因此签名实际上是随数据一起发送的。

签名使用 RSA 私钥加密,看起来像这样:

viPaFZgLvu8ZGepMbeQS71x8h2+K7gzI9kHk37LqMSO8lBBStcs6AyfghbeR\n2Xg8FBke2RakOo8J0ORFc2LYSK2...

发布表单时,此签名更改为用双反斜杠 (\n) 转义所有反斜杠符号 (\n) :

viPaFZgLvu8ZGepMbeQS71x8h2+K7gzI9kHk37LqMSO8lBBStcs6AyfghbeR\n2Xg8FBke2RakOo8J0ORFc2LYSK2...

这实际上使验证签名的过程出错了。为了摆脱 if,我尝试使用 JSON.parse 实际上输出了正确的签名,但也引发了 Unexpected token 错误。

我也尝试过使用 CGI::unescape,但没有用。从那里开始,我一直想弄清楚如何完成这项工作。

想法?

如果只是这个特殊字符给您带来问题,您可以简单地 gsub 它:

signature = params[:signature].gsub("\n", "\n")