Ajax 如何防止数据盗用


前端打算用 ajax 来获取数据,可是怕辛辛苦苦输入的数据,被别人通过分析 ajax 返回的数据直接移花接木盗走。

是通过验证的防止防止这种行为的发生吗?可是目前网站是不需要注册即可使用,所以应该如何防止?

谢谢。

大概就是:

前端 -> 通过 ajax 获取数据 -> 后台 -> 返回数据

如何防止别人伪造 ajax 获取数据

jquery php mysql JavaScript

捡节操的渣糖 11 years, 1 month ago

oauth2

m131313 answered 11 years, 1 month ago

一句话,只要是能看到的,就是可以拿到的,所以不用纠结了

nsover answered 11 years, 1 month ago

服务器生成一个token(比如 md5(key+ip+date),这个规则只有管理员知道)与html一起下发给用户,然后由用户浏览器发起ajax请求,同时附加之前服务器生成的token,服务器判断来源网站域名+token正确后给用户发回数据。
之前为了防止投票作弊器,想到了这个办法。

魔法师D消失 answered 11 years, 1 month ago

网页是公开的,数据就是公开的,任何验证都是徒劳,都是可以被 robot 模仿的。

可能唯一有点作用的,就是对数据进行处理,比如小说网站就不传文字,
而是传由文字生成的图片,这是一个可以参考的例子。

Umbra answered 11 years, 1 month ago

Access-Control-Allow-Origin这个header就够了

古力查美玲 answered 11 years, 1 month ago

服务器判断referer, 如果referer的域名是自己的域名, 就返回, 不然就不返回。

朝夜神社的巫女 answered 11 years, 1 month ago

简单的话可以在每个ajax请求里加个sessionID。后端根据 sessionID 判断是否返回数据。但是没有办法完全避免爬虫来抓数据。

Naiyoi answered 11 years, 1 month ago

1、前端显示页面的时候后端输出一个唯一的签名;
2、Ajax 从前端发起请求到后端获取数据时需传递效验参数,后端再效验签名
不知道这个思路能否满足你的需求(不过这个思路的签名依旧可以被获得)

wakaka answered 11 years, 1 month ago

我想没有好办法。如果想拿到,是肯定能拿到的。

阿良良木D历 answered 11 years, 1 month ago

楼主所说的这个数据终究要在某些合法页面被显示的,所以用什么方法也不能避免被盗用。只是盗用的成本问题

2276215 answered 11 years, 1 month ago

如果不進行身份驗證,怎樣防範都是徒勞的。因爲想要阻止「別人」,首先得識別「別人」。

身份驗證可以不是顯式的登錄,而是 Google 式的追蹤。要做到即便換瀏覽器換 IP 清空瀏覽器緩存、cookies 照樣能識別同一用戶。

能做到這些,再限制調用數據的頻率,對可疑者強制輸入驗證碼,基本就是 Twitter、Google 這些大公司的水準了。

神秘的天朝 answered 11 years, 1 month ago

每次发起ajax请求的时候验证一个token (加密串)即可

Illya answered 11 years, 1 month ago

“目前网站是不需要注册即可使用,所以应该如何防止”。
“别人伪造ajax获取数据”

首先你得知道如何区分 所谓的“别人”。但看问题里并没有说明。

看楼主的需求,应该是一种内容型的网站,需求应该就是怕别人剽窃自己的内容。
做任何事情都有成本,一个安全原则是提高对方的作案成本,付出的比得到的多很多,以达到让对方放弃作案的目的。

有个比较常见的方法是,将你们的内容(数据)在后端生成带水印的图片,ajax加载。至少别人不能直接用。

redwolf answered 11 years, 1 month ago

Your Answer