在网址中使用电子邮件地址是否安全?
我的意思是假设一个网络应用程序有一个注册用户“Bob”,Bob已经使用他的电子邮件注册=> Bob@hisemail.com
。现在您的意见是,应用程序接受并使用//application.com/Bob@hisemail.com
上的GET请求以及每个用户使用相同类型的URL是否安全?
答案 0 :(得分:13)
基本上,这取决于你是爱还是恨你的用户。当您按照建议执行操作时,这些URL将在Web上的HTML页面上传播。不一定局限于您自己的网站,因为人们可能会链接到它。
当您的网页获得足够的牵引力变得重要时,垃圾邮件机器人的抓取工作人员会注意并向其抓取工具添加规则以从网址中提取电子邮件地址。它甚至可能没有必要,因为一些愚蠢的正则表达式可能已经找到了没有适应性的电子邮件。
然后,您的用户的电子邮件地址将落在垃圾邮件发送者的列表上,并以委婉的方式获取“不需要的广告”。 (这些电子邮件列表也将具有相当高的价值,因为它们被“验证”为真实的,现有的。)
您在这里所做的就是赠送一些您的用户信任的私密标识。永远不要让它公开,除非你的用户告诉你!
从技术角度来看,你可以去实现它。
答案 1 :(得分:1)
我认为这不是一个好主意。首先,电子邮件包含需要进行URL编码的特殊字符,因此它们不会与系统字符混淆(例如,对于FTP服务器,您可以传递像ftp://user:pass@test.com这样的用户名。)
另外,从用户角度来看,我不喜欢它,因为在这种情况下,我的电子邮件将保留在浏览器历史记录中。
答案 2 :(得分:0)
在这种情况下,电子邮件地址可以与请求参数一起用作GET方法,例如:
// application.com/file_name?email=Bob@hisemail.com
此选项更安全且可能已使用。
答案 3 :(得分:0)
取决于。
虽然常见的电子邮件地址不是很成问题,但电子邮件地址可能包含反斜杠\和引号“[1]
等字符 abc."defghi\\\".xyz@example.com
或"abcdefghixyz"@example.com
是有效的电子邮件地址。
只要您在使用它之前正确地进行valide和santizing输入,例如从db中查找实体,您的应用程序就是安全的。
您也在使用该用户的电子邮件地址,可能会将其置于垃圾邮件发送者的手中。
另一个问题是,如果您的用户更改了其电子邮件地址,则该实体将无法访问。
更好的方法是使用唯一索引,也许与用户名结合使用。