某些服务网址需要用户名密码参数才能获得安全保护。在这个结构中,我们建议在服务器上使用代理脚本。不要在javascript应用程序中使用用户名密码对。例如,我有一个为我指定的服务,如下所示:
http://service.com/service?request=get&category=products&username=some&password=123456
这项服务不会给我带有用户名密码对的产品。
我应该用PHP,Aspx,Java等创建一个代理页面。我用PHP创建了一个代理。
http://localhost/my/proxy.php
$url = "http://service.com/service?request=get&category=products&username=some&password=123456";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
$result = curl_exec($ch);
现在我可以在我的javascript代码中使用http://localhost/my/proxy.php
了。但每个人都可以向我的代理发送请求并获取我的产品。这是一个问题。我该如何解决这个问题?
答案 0 :(得分:0)
仅允许对网址的POST请求
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// code
}
为受信任的用户提供令牌(包含Cookie),并在提供服务之前检查令牌
//setting the token
setcookie(name, value, expire, path, domain);
//authentication
if (isset($_COOKIE[$cookie_name]) && $_COOKIE[$cookie_name] == $token){
// code
}
使用会话而不是Cookie
//starting session mechanism
session_start();
//setting session
$_SESSION['token'] = $token;
//authentication
if (isset($_SESSION['token']) && $_SESSION['token'] == $token){
// code
}