如何防止向用户显示json响应?
$.ajax({
type: "GET",
contentType:"application/json;charset=UTF-8",
url:"/api/links/",
data: JSON.stringify(data),
dataType: "json",
success: function (response) {
//some code
}
)}
当用户在浏览器中输入以下网址:
MYDOMAIN/API /链接
,然后按ENTER键它表明类似的json数据:
[
{
"$id": "1",
"LinkId": 1,
"Title": "example.com",
"Url": " www.test.com",
"IsShow": true,
"UserId": 1
},
{
"$id": "2",
"LinkId": 2,
"Title": "fars.com",
"Url": "fars.com",
"IsShow": true,
"UserId": 1
}
]
现在我的问题是如何防止向用户显示这些数据?
没有防弹的方法。
大多数时候,无论何时将AJAX请求发送到服务器,都会在请求中附加一个名为X-Requested-With的值为XMLHttpRequest的特殊标头。
因此,如果您希望只能通过AJAX请求访问数据,那么通过简单检查X-Requested-With标头是否具有XMLHttpRequest值,可以决定是返回JSON还是404数据还是404
您也可以对您的数据进行加密,因为@ymonad提出了额外的安全措施,但同样只会让用户难以看到,但几乎不可能。
SSL和API密钥不是一个非常防弹的方法吗? – Crowes
我假定问题是在他的网页上下文中提出的,而不是通过REST API在服务器之间进行通信。但是你可能是对的。 –
这是不可能的,因为你的代码可以读取的是你的用户可以阅读的内容。但是,您可以混淆代码,加密数据以使其难以阅读。 – ymonad
你不能,但你使用Referer来确定请求来自哪里 –
yes.using Referer是最好的解决方案。非常感谢 – Mohsen