Closed jinguojie-loongson closed 7 years ago
一种可能的方法: app.php出现时,内部记录一个临时code,code只对一次安装生效
曾经设想过:单位时间内的下载频率
显示安装按钮的时候:
这种方式,能够消除“直接访问Ajax接口”的攻击方式,但是不能消除“使用Load Runner录制脚本”的攻击方式(只能通过加手工校验码):
争取能够找到不使用验证吗的方法,降低用户复担。
另外一个方法:变换控件id
另外一个方法:浏览器ID
Jin、Jiang再次讨论:
问题本质定义:如何区分“用户手工点按钮”和“LoadRunner、浏览器插件工具”? 或者说:什么事情只能人做、而工具不能做? 以往:验证码只能人眼处理
类似软件:网络抢票
按钮id随机变化:可以防备Load Runner,不能防备浏览器插件自动点击按钮
为什么Youku不防下载:可以通过事后追查,视频中含有水印
另一种思路:不在服务器上检查,而是在客户端上 客户端保存一个数据文件:“所以已经安装过的应用、版本号” 只要已经安装过,重复安装不增加户数。 数据文件不容易被修改。 <-- 这应该是最终采用的方法,下一版本中再实现。
来次先实现双Token的方案,解决90%的问题。
getrandcode():如果只有app.php使用,就放到_app.inc中。 如果系统中其它页面也可能使用,放到_util.inc中。
改成一个函数调用
create_new_token() { md5(getrandcode) $_SESSION["token"]赋值 return }
unset($_SESSION['token']); 也封装成函数 clear_token()
写任何的代码的时候,都要假定这段代码将来是会被重用的。
if (表达式) throw new XXXException("message");
http://www.cnblogs.com/DreamDrive/p/5417283.html
现在调用incAppDownloadCount.php就能够加1, 需要严格判断来自于客户端的安装。