【问题标题】:how to encode password in javascript?如何在javascript中编码密码?
【发布时间】:2013-12-07 10:13:13
【问题描述】:

我有密码文本框,允许用户使用密码输入任何类型的字符。但是,当用户使用诸​​如“mypass@676/my&pass/my%pass”之类的密码时注册失败,但当使用其他字符时,他能够注册。是不是前端没有对密码进行编码?

我将注册 url 发布到我的注册服务,因为它是一个 url,如果密码是 mypass@676 系统只接受 mypass 并省略其他字符,因此它失败了。

我的javascript代码是这样的,

data+= "&password="+$(formID).find('input[id=password]').val();,这将照原样为我服务。

问题:

  1. 如果我在 javascript 中编码我的密码说我的密码是 “my%passw”,所以当我编码“my%25pass”和登录期间,我 应该给吗?

  2. 好的,如果我在登录期间再次编码会发生什么 我现有用户的密码会被编码吗?

【问题讨论】:

  • 您能否发布更多关于两者之间的密码发生了什么的信息?这是数据库问题吗?解析问题?
  • 不太可能。尝试在服务器端打印密码进行测试。
  • 你不能通过POST而不是GET发送它吗?
  • @christy 是 post 方法。

标签: javascript encoding passwords special-characters


【解决方案1】:

使用encodeURIComponent():

data += "&password=" + encodeURIComponent($(formID).find('input[id=password]').val());

顺便说一句,input[id=password] 可以简化为input#password

【讨论】:

  • 此更改是否会影响我现有的用户。密码现在如何存储在数据库中?
  • @Oscar 不,这不会影响您的脚本接收的字符串。传递mypass%40676%2Fmy%26pass%2Fmy%25pass 得到字符串mypass@676/my&pass/my%pass
  • @Oscar 术语 encoding 可能有点误导,因为您通常不必在 PHP 脚本中 decode。它更像是转义
  • 好的,但是当我看到我的 ajax 帖子时,密码参数有“my%passw”,但我猜后端的某些东西让它失败了..
猜你喜欢
  • 1970-01-01
  • 2016-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 2020-05-08
  • 2018-02-08
  • 2011-08-19
相关资源
最近更新 更多