Fecmall

第 2 位会员

会员
个人信息
  • 加入于 2017-05-31 17:38:45
  • 城市 Qingdao
  • GitHub https://github.com/fecshop
  • 最后登录时间 8天前
  • 签名 净化自己,潜心编码
个人简介
Terry,Fecmall开源产品作者,12年电商经验一线程序员开发者,擅长规划产品,架构设计。
个人成就
  • 发表文章次数 744
  • 发布回复次数 5760
  • 个人主页浏览次数 683
关于 csrf 漏洞和攻击的原理,以及在yii2 fecshop 中的应用分析6年前

因此对于网站中涉及到数据库更新操作的update,add,delete操作,不要使用get请求,而必须需要使用post请求,原因解析:

1.get请求默认是可以跨站请求的,譬如图片加载

2.很多时候为了方便,我们会将一些删除操作使用get请求,譬如后台数据列表,删除某条数据,直接用a标签,然后加上删除的url,然后将要删除的id写到url请求里面,直接get请求,写起来很方便,譬如:http://wwww.xxx.com/custom/article/delete?id=33,然后使用get请求,这个只有登陆用户才能访问,因此会认为是安全, 但是这会留下csrf漏洞, 如果你登陆了后台账户,别人给你发了封邮件,里面有一个假的图片,为: <img src="http://wwww.xxx.com/custom/article/delete?id=33">,那么打开邮箱的时候,你的后台的这一条数据就会被删除,因为浏览器里面有cookie,因此有执行权限。

3.因此涉及到数据库改动的要用post请求

4.对于get请求,仅仅是查询,不会涉及到数据库操作,因此被加载了也不会存在更新操作

5.get请求,就像上面img src加载的方式,浏览器为了安全,js默认是不能读取内容的,虽然浏览器加载了get的内容。

6.当然,post请求也可以被攻击,在form表单里面,需要加上csrf参数,譬如:

<input class="thiscsrf" type="hidden" value="-pJu7CfqMcpScHBs6vTyAyyylKUEOG_25ufQZi89oUKU1xaaXahY8jovHB2Zlb5lTtPd0kgPIamgrKo1bUnAHQ==" name="_csrf">

然后在服务端做csrf验证,就可以防范csrf了。

用户评论发表时提示:验证码错误6年前

需要登陆并填写验证码,如果验证码填写正确,但是依旧报错,说验证码不正确,在论坛搜一下帖子解决

关于 csrf 漏洞和攻击的原理,以及在yii2 fecshop 中的应用分析6年前

为了一次性解决csrf漏洞问题,又回头查阅了资料,以及yii2的实现

这次升级后,xss和csrf就都没问题了

之前纠结一个问题:

我自己的网站为A,伪造站为B

如果产品页面我做full page cache(整页缓存),那么动态数据需要异步加载,产品页面存在加入购物车操作post请求,需要csrf参数,但是csrf是不能缓存的,因此必须通过ajax异步加载过来,那么我使用ajax异步加载的csrf信息,B站是否可以通过ajax加载过来?然后放到form表单中伪造,在fecshop的产品页面你会发现有一个get的ajax请求,因为get请求默认是可以跨站的,譬如图片的加载, 那么js是否可以读取呢?看了这篇文章放心了:https://security.stackexchange.com/questions/115794/should-i-use-csrf-protection-for-get-requests

As a CSRF attack can execute commands but can't see their results, it is forced to act blindly. 

另外我也测试了,ajax跨站get请求,通过浏览器的debug工具可以查看到内容的确是加载了,但是浏览器js无法读取内容

使用git管理代码,开发分支和线上分支有不同文件,大家是如何处理的?6年前

1.还有js 和css , 线上一般都关掉forceCopy,因此发版后需要清空一下@web/assets/

2.http://www.fecshop.com/doc/fecshop-guide/instructions/cn-1.0/guide-fecshop_config_speed.html

如果开启了配置文件合并,发版后还需要合并配置文件

3.刷新缓存

等等一系列发版后需要操作的事情,

因此写个命令行脚本最好,一劳永逸

对于fecshop的js和css部分,有个地方不理解6年前

@zkamisama [#20楼](#comment20)

这是yii2的加载方式,不能这样用,如果这样用,fecshop的多模板机制会被破坏掉

不过对于本地自己开发,可以这样使用加载js文件,但是如果想做第三方库包,就不能这样用了,这样别人使用你的库包无法重写js css文件。

一起来定制运行 fecshop 的 docker 环境6年前

看了一下你的yml文件:https://github.com/ChallengesOfPHP/docker-fecshop/blob/master/docker-compose.yml

1.php部分采用了中国源,这个很赞,国内加快下载速度,以及减少被墙的几率

2.env的引入很好:https://github.com/ChallengesOfPHP/docker-fecshop/blob/master/.env

3.数据库部分,mysql和monmodb的数据存储,你没有映射出来,如果你的容器出现问题被销毁,那么你的mysql和mongodb的数据也没有了

你的帖子里面已经说明了, 数据的持久化存储,可通过挂载容器的目录到宿主机,但yml文件中没有做配置

docker compose mysql部分的配置,这个挺全的:https://github.com/sprintcube/docker-compose-lamp/blob/master/docker-compose.yml

Fecshop 1.6.0.0 发布 - fecshop的完善和安全又上一个新的台阶6年前

fecshop 1.6.0.0版本,mysql部分有数据更新,因此,版本升级需要migrate操作

fecshop版本升级参看文档:http://www.fecshop.com/doc/fecshop-guide/develop/cn-1.0/guide-fecshop-about-update.html

最近新开发的功能比较多,如果升级和新版安装后出现bug问题,请及时提交,我们会尽快修复。

用awvs扫了一下,23个高危6年前

这些软件很多存在误报,今天用软件审计了一下代码:

基本都是误报,感觉是找出来可能存在问题的代码处,让你重新检查一下

地址: https://osc.codesafe.cn/auditpage.html#/5759f641b2b23c559c1b90d3e01eb01ac04c87fbc30cb310f744541b875468c9/f4f1883b78694f9d991535bc0d318329

xunsearch 使用中文搜索报错fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known6年前

如果不使用中文搜搜,xunsearch部分可以通过方法一关闭,这样就不需要安装xunsearch了

关于 csrf 漏洞和攻击的原理,以及在yii2 fecshop 中的应用分析6年前

对于appserver,这类web api,是从request header中读取access-token,和session cookie的原理不一样,因此是不能跨站进行csrf攻击的

https://github.com/fecshop/yii2_fecshop/blob/master/yii/filters/auth/QueryParamAuth.php#L27

https://github.com/fecshop/yii2_fecshop/blob/master/services/Customer.php#L666

因此fecshop的appserver入口是没有csrf漏洞的

资料参考:https://www.bbsmax.com/A/xl563yX0dr/ https://www.web-tinker.com/article/20857.html

关于 csrf 漏洞和攻击的原理,以及在yii2 fecshop 中的应用分析6年前

出处:https://security.stackexchange.com/questions/115794/should-i-use-csrf-protection-for-get-requests

google翻译文字如下:

由于同源政策,只有状态变更操作才需要CSRF保护。该政策规定:

Web浏览器允许第一个Web页面中包含的脚本访问第二个Web页面中的数据,但前提是两个Web页面具有相同的源。

因此,CSRF攻击将无法访问它请求的数据,因为它是跨站点(即CSRF中的CS)请求,并且由同源策略禁止。所以非法数据访问不是CSRF的问题。

由于CSRF攻击可以执行命令但无法查看其结果,因此它被迫盲目行动。例如,CSRF攻击可以告诉您的浏览器请求您的银行帐户余额,但无法看到该余额。这显然是一种毫无意义的攻击(除非您尝试DDoS银行服务器或其他东西)。但是,例如,如果CSRF攻击告诉您的浏览器指示您的银行将资金从您的帐户转移到攻击者的帐户,那么这并非毫无意义。攻击脚本无法访问传输的成功或失败页面。幸运的是,对于攻击者来说,他们不需要查看银行的回复,他们只想在他们的帐户中存钱。

由于只有状态变化的操作可能成为CSRF攻击的目标,因此只有他们需要CSRF防御。

因此对于查看数据的get请求是不需要加csrf的,但是对于一些delete操作也使用get请求,就需要更改请求方式了。

使用git管理代码,开发分支和线上分支有不同文件,大家是如何处理的?6年前

@Axin #9楼

我认为比较简单的方式,就是把一部分基本万年不变的配置文件不放到github里面,譬如数据库配置

其他的都放到gitlab里面

然后把一些发生变动的线上配置文件放到一个文件夹里面(在线上环境里面)

更新的时候,git pull && cp 命名, 也就是git拖取代码成功后,马上执行cp命令,将那些线上独有的文件覆盖github里面的,如果有其他需要操作的,就在后面添加执行命令。

这样一行命令行搞定。

vscode(visual studio code ) ubuntu 安装 for golang 6年前

vscode 编辑器扩展 GitLens

显示每一个代码由谁,在什么时间更改的

RBAC 后台菜单的开发使用6年前

@yue909 [#2楼](#comment2) fecshop的默认菜单有问题,还是你填写新菜单有问题?

一次性说清楚问题发生的上下文context,不然我的大脑怎么切换到你的这条线程上面

如果是二开的新菜单,不报错也不显示新添加的菜单,后台刷新下appadmin的缓存试试

Your Site Analytics