我有一个有角度的5应用程序,我想从中发出一个http请求,它会按以下格式点击一个URL:
https://example.com/api?email=的 {{myemail@gmail.com}} &安培;传= {{我的 密码}} & input = {{user input}}
这将给我一个json回复。
表单只有一个输入框,用户将填写“用户输入”。 除此之外,我需要发送一个硬编码的电子邮件和密码,出于安全目的,我无法保留在客户端。
任何建议如何隐藏它。
答案 0 :(得分:0)
首先,您不希望将这些值作为url参数提交,因为它们会在地址栏中公开:
https://example.com/api?email={{myemail@gmail.com}}&pass={{my password}}&input={{user input}}
而是对这样的特定端点进行POST或PATCH:
https://example.com/api/user
并将您的数据包含在JSON正文中,例如:
{
"email":"mickey@disney.com",
"pass":"whatever"
"input":"user data"
}
putUserData(body: any){
const headers = new Headers({'Content-Type': 'application/json'});
const options = new RequestOptions({ headers: headers });
const url = 'https://example.com/api/user';
return this._http.patch(url, body, options)
.map((response: Response) => response.json())
}
在调用此端点之前,请先调用另一个端点以获取硬编码的电子邮件和密码,例如:
获取https://example.com/api/user/credentials
这应提供包含该数据的JSON响应:
{
"email":"mickey@disney.com",
"pass":"whatever"
}
当用户提交表单时,您可以将此对象与表单对象合并。这样,您就不会在客户端上对此数据进行硬编码,也不会将其存储在客户端的任何位置。
但是这仍然不是一个安全的解决方案,因为你传递凭证,如果他们足够坚定,黑客就很容易被抓住。