小编twe*_*one的帖子

Google Apps脚本中的安全性为每个请求提供了带有新Utilities.getUuid()的公共HTMLService脚本

我生命中stackoverflow中的第一个问题!

我来自嵌入式程序设计领域,并且对Web安全性有非常肤浅的了解。我已经使用Google Apps脚本构建了平台。所有数据均存储在数据表中。一切正常。我很快想到了这种身份验证方案,说实话,我确定它一定是不安全的!绝对,我想念一些东西!这是我的过程:

  1. 在访问url(通过电子邮件共享的url-一个很小的社区,并且不需要该域名)后,系统会向用户显示使用HTMLService(doGet)生成的登录表单。
  2. 该表单将发布数据(doPost),并根据电子表格中的值检查用户名和密码(TODO:将来对密码进行哈希处理)。
  3. 如果匹配,则通过Utilities.getUUID()调用生成UUID字符串。该字符串存储在电子表格中。
  4. 然后,脚本生成并返回带有HTMLServicejQuery Mobile网站。所有页面均使用jQm页面导航,因此可同时提供。

这是服务电话:

var addedContent = '<script>var session={sessionId="UUID"}</script>';
return HtmlService.createTemplateFromFile... ...addedContent(addedContent);
Run Code Online (Sandbox Code Playgroud)

我使用.addedContent()调用将UUID字符串附加为javascript变量,该变量是在成功登录后使用Utilities.getUuid()生成的。

  1. 随后每次调用后端以获取或设置数据都通过google.script.run进行。这总是调用相同的函数,并通过和传递对象:
    • 实际要调用的功能
    • 该功能所需的数据,
    • 每个通话的用户名和最新的UUID。
  2. 首先,检查用户名和UUID,如果它们匹配,则生成一个新的UUID并将其存储在电子表格中。
  3. 然后调用实际函数,并将UUID与返回的数据一起发送给成功处理程序:

会调用google.script.run async的函数示例:

function get_user(username){
  ...
  var session = {username: username, sessionId: lastUUID};
  // don't confuse the two username properties.
  // the username for the authentication is inside the session object.
  // the property 'username' of the data object is for the getUser function
  // …
Run Code Online (Sandbox Code Playgroud)

javascript security authentication web-applications google-apps-script

5
推荐指数
0
解决办法
222
查看次数