如何防止向用户显示json响应?

问题描述:

如何防止向用户显示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 
    } 
] 

现在我的问题是如何防止向用户显示这些数据?

+0

这是不可能的,因为你的代码可以读取的是你的用户可以阅读的内容。但是,您可以混淆代码,加密数据以使其难以阅读。 – ymonad

+0

你不能,但你使用Referer来确定请求来自哪里 –

+0

yes.using Referer是最好的解决方案。非常感谢 – Mohsen

没有防弹的方法。

大多数时候,无论何时将AJAX请求发送到服务器,都会在请求中附加一个名为X-Requested-With的值为XMLHttpRequest的特殊标头。

因此,如果您希望只能通过AJAX请求访问数据,那么通过简单检查X-Requested-With标头是否具有XMLHttpRequest值,可以决定是返回JSON还是404数据还是404

您也可以对您的数据进行加密,因为@ymonad提出了额外的安全措施,但同样只会让用户难以看到,但几乎不可能。

+1

SSL和API密钥不是一个非常防弹的方法吗? – Crowes

+0

我假定问题是在他的网页上下文中提出的,而不是通过REST API在服务器之间进行通信。但是你可能是对的。 –