首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >php防止模拟请求

php防止模拟请求

原创
作者头像
IT工作者
修改2022-04-16 15:35:31
修改2022-04-16 15:35:31
1.7K0
举报
文章被收录于专栏:程序技术知识程序技术知识

1.一些网站是采用检测此IP地址登录的密集度,多次登录后需要输入验证码,那么这时CURL模拟的提交就需要去对验证码图片进行分析,这样就会花费大量时间,当然,这种是对于防止登录被爆破,用户资料泄露的。

2.还有一种就是直接在session保存生成的随机码,然后放在input的隐藏域,这种比验证码那种差了许多。

3.注意javascipt本身是无法跨域提交的,不是因为不能做到,而是防止别人恶意偷取用户信息,例如点击打开他的网站,用iframe打开正规网页,然后在另一个iframe中进行偷取。

要实现ajax跨域访问,需要设置

代码语言:javascript
复制
header("Access-Control-Allow-Origin:*"); //跨域权限设置,允许所有    

要防止 ajax跨域访问,需要设置

代码语言:javascript
复制
header("Access-Control-Allow-Origin:http://www.test.com"); //只允许test.com跨域提交数据 

4.如果要防止php的模拟请求,比如post请求,那么就可以设置必须为ajax请求才能处理。

//判断是否为ajax请求,防止别人利用curl的post抓取数据

代码语言:javascript
复制
if( isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && 
    strtolower($_SERVER["HTTP_X_REQUESTED_WITH"])=="xmlhttprequest"){ 
}

完整解决方案:

代码语言:javascript
复制

header("Access-Control-Allow-Origin:http://www.test.com/cet"); 
//只允许本站提交数据,前端防ajax跨域,其实js本来就不能跨域 
 
//判断是否为ajax请求,后端防止别人利用curl的post抓取数据
if(isset($_SERVER["HTTP_X_REQUESTED_WITH"]) &&
strtolower($_SERVER["HTTP_X_REQUESTED_WITH"])=="xmlhttprequest"){ 
    //处理业务逻辑
}else{ 
    echo "we caught you! you have no access!";
};

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档