【问题标题】:How to encrypt/decrypt URL parameters in Google Apps Script? [closed]如何加密/解密 Google Apps 脚本中的 URL 参数? [关闭]
【发布时间】:2019-08-12 01:56:13
【问题描述】:

我想加密/解密 URL 上的参数。因为当用户故意改变id参数时,还是返回结果。

例如:https://script.google.com/xxxxxxxxx/exec?v=edit&ac=A00001 当用户更改 A00003 时,它仍然返回结果。这就是问题

有什么方法可以像https://script.google.com/xxxxxxxxx/exec?kabhshcjsgsj123455123 那样加密,后端将“kabhshcjsgsj123455123”解析为“v=edit&ac=A00001”???

【问题讨论】:

  • 请使用正确的标签。阅读javascript的用户指南

标签: google-apps-script google-sheets web-applications


【解决方案1】:
  • 您希望将加密的查询参数用作 Web 应用程序的查询参数。
    • 您想使用像https://script.google.com/xxxxxxxxx/exec?kabhshcjsgsj123455123 这样的加密查询参数。
    • 例如,当实际查询参数为v=edit&ac=A00001时,您不想让用户修改值。
  • 您的 Web 应用程序使用 doGet(e)。您想从e 的事件对象中检索值。

如果我的理解是正确的,那么这个答案呢?请认为这只是几个答案之一。在这个答案中,作为一种简单的方法,我根据您的情况使用 base64。示例脚本如下。在这种情况下,客户端和服务器端有 2 个脚本。

示例脚本:客户端

function fordoget() {
  var url = "https://script.google.com/macros/s/###/exec"; // Please set the URL of Web Apps.
  var value = {v: "edit", ac: "A00001"}; // I used "v=edit&ac=A00001" as an object.
  var encryptedValue = Utilities.base64Encode(JSON.stringify(value));
  url += "?" + encryptedValue;
  var res = UrlFetchApp.fetch(url);
  Logger.log(res)
}
  • 在您使用它之前,请部署 Web 应用程序。
  • 这是 Google Apps 脚本的示例脚本。所以如果你想使用其他语言,请修改这个。
  • 我想当v=edit&ac=A00001作为{v: "edit", ac: "A00001"}的对象时,这在服务器端很容易使用。
    • 在上面的示例脚本中,URL 如下所示。
      • https://script.google.com/macros/s/###/exec?eyJ2IjoiZWRpdCIsImFjIjoiQTAwMDAxIn0=

示例脚本:服务器端

function doGet(e) {
  var encryptedValue = Object.keys(e.parameter)[0];
  var decryptedValue = JSON.parse(Utilities.newBlob(Utilities.base64Decode(encryptedValue)).getDataAsString());

  // decryptedValue.v is "edit"
  // decryptedValue.ac is "A00001"

  // do something.

}
  • 当您修改Web Apps的脚本时,请将Web Apps部署为新版本。由此,反映最新的脚本。请注意这一点。
  • 在本示例中,假设Execute the app asWho has access to the app 分别设置为MeAnyone, even anonymous
  • https://script.google.com/xxxxxxxxx/exec?kabhshcjsgsj123455123的情况下,kabhshcjsgsj123455123是查询参数的key。值为""。请注意这一点。
  • 我认为值大小的限制。请注意这一点。
  • 在上面的示例脚本中,可以通过以下方式检索参数。
    • decryptedValue.vedit
    • decryptedValue.acA00001

参考资料:

如果我误解了您的问题并且这不是您想要的结果,我深表歉意。

【讨论】:

  • 感谢您对我的帮助,您的知识将对我很有帮助。最好的问候!
  • @Naoa Lee 感谢您的回复。我很高兴你的问题得到了解决。也谢谢你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
  • 2013-11-18
  • 2020-04-10
  • 1970-01-01
  • 2011-12-06
  • 2018-04-21
相关资源
最近更新 更多