Amp

WEB安全入门:如何防止 CSRF 攻击?

大憨熊 提交于 2020-08-06 09:57:54
现在,我们绝大多数人都会在网上购物买东西。但是很多人都不清楚的是,很多电商网站会存在安全漏洞。乌云就通报过,国内很多家公司的网站都存在 CSRF 漏洞。如果某个网站存在这种安全漏洞的话,那么我们在购物的过程中,就很可能会被网络黑客盗刷信用卡。是不是瞬间有点「不寒而栗」 的感觉? 首先,我们需要弄清楚 CSRF 是什么。它的全称是 Cross-site request forgery ,翻译成中文的意思就是「跨站请求伪造」,这是一种对网站的恶意利用。简单而言,就是某恶意网站在我们不知情的情况下,以我们的身份在你登录的某网站上胡作非为——发消息、买东西,甚至转账...... 这种攻击模式听起来有点像跨站脚本(XSS),但 CSRF 与 XSS 非常不同,并且攻击方式几乎相左。XSS 利用站点内的信任用户,而 CSRF 则通过伪装来自受信任用户的请求来利用受信任的网站。与 XSS 攻击相比,CSRF 攻击往往很少见,因此对其进行防范的资源也相当稀少。不过,这种「受信任」的攻击模式更加难以防范,所以被认为比 XSS 更具危险性。 这个过程到底是怎样的呢?让我们看个简单而鲜活的案例。 银行网站 A,它以 GET 请求来完成银行转账的操作,如: http://www. mybank.com/Transfer.php? toBankId=11&money=1000 危险网站 B,它里面有一段

C++ 九阴真经之编译期汇总

爷,独闯天下 提交于 2020-08-06 09:54:40
上一篇介绍了参数加载类, 所有的参数通过GET_PARAM获取, 根据提供的默认参数类型,采用模板自动识别返回相应类型。 不是所有的参数都会记录在册,所以方便管理,我现在需要把程序中使用到的参数全部输出,为了实现自动化管理的目的,目前可以想到的有两种方案: 方案一: 每次调用GET_PARAM进行登记,运行程序输出所有使用过的参数,显然这种方案并不可取,并不是所有的分支都能跑到,所以输出的参数列表也是不完整的。 方案二:使用模板静态变量使用即实例化的原则, 每一次调用GET_PARAM都定义一个结构体,然后使用该结构体初始化模板静态变量,初始化时需要构建链表,目前在linux下基于C++17标准测试通过,但windows下还无法完成。 需要涉及以下C++特性: 1、局部结构体用作模板参数; 2、局部结构体在不同的结构中,gcc编译器会定义出不同的结构名称; 3、模板类中可以访问局部结构体; 4、模板类静态变量,编译器对使用过的模板静态变量进行实例化 5、静态变量实例化时,必须对将对于类通过链表关联起来 局部结构体定义: #define COMBINESTRUCTNAME1(section, key) section##key #define COMBINESTRUCTNAME2(section, key) COMBINESTRUCTNAME1(section, key)

持续交付的最后一英里

 ̄綄美尐妖づ 提交于 2020-08-06 09:47:30
如果开发人员的变更集在集成时并没有实现长期部署就绪的状态,那么你的团队其实就没有真正的实践持续交付。 想要完全优化产品开发周期,你需要在团队中强调无缝部署的重要性,使每位工程师都对主要生产线负责,使主要生产线保持在可发布状态。 真正的持续交付中很多团队大概率都会遇到的以下三类阻碍: 实施过程: 你的开发过程中存在很多人为制造的阻碍,包括质量检查和手动部署。 操作推进: 你的经理或工程师缺乏信心。他们不确定是否能够在集成前发现系统漏洞,或无法确定能否应对那些系统部署后才发现的问题。 技术工具: 你现在所用的开发工具不充分、效率太低或者经常出故障。 这篇文章将会告诉你如何降低每一类障碍,从而在你的工程师团队中实现部署就绪文化。 01实施过程中的阻碍 在团队从传统交付状态过渡到持续交付的过程中,需要开发团队中的每个人都尽可能有策略地管理时间。实现这种严苛的时间管理方法的前提就是要在部署过程中尽可能地自动执行所有操作,尤其是那些非常阻碍部署的手动操作。在许多团队中,最困难的实施障碍不只单单存在于人力管理和发布流程管理(例如人工质量检查和安全检查)。持续交付工程中代表“批准许可”标志的存在会让团队有信心相信他们交付的产品是符合要求的。因此,解决软件开发工程中的品控问题不能是只放在最后一步实施的,在每个环节都进行严格把控是消除流程实施中的障碍最关键的一步。 | 移除部署过程中的障碍——QA

IPCThreadState::executeCommand 解析(Transact如何调用到onTransact)

佐手、 提交于 2020-08-06 09:46:35
status_t IPCThreadState::executeCommand(int32_t cmd) { 。。。 b->transact(tr.code, buffer, &reply, tr.flags); 。。。 } 这里就是处理不同的请求地方,当此次请求是一个客户端请求时,会走到BR_TRANSACTION的case中。上面的代码我们可以看到这么一句sp<BBinder> b((BBinder*)tr.cookie) 这个是我们从binder驱动中读出的值。在上一节注册service里面,我们是把BnMediaPlayerService指针注册到了binder当中,如果客户端此次请求是对MediaPlayerService服务的 ,那么此处的cookie就是Service代码地址的指针。然后会执行b->transact(tr.code, buffer, &reply, tr.flags); 我们看一下BBinder中transact()的实现 status_t BBinder::transact( uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) { data.setDataPosition(0); status_t err = NO_ERROR; switch (code) { case

TMS320C6678开发例程使用手册(8)

左心房为你撑大大i 提交于 2020-08-06 08:57:29
3.2 IIR—— 无限 脉冲响应 数字滤波器 此程序的作用是进行IIR无限脉冲响应数字滤波器测试。 按照工程导入步骤加载IIR.out文件,然后点击程序运行按钮,程序会在断点处停下来。 点击CCS菜单"Tools->Graph->SingleTime",在弹出的界面中点击Import按钮,选择IIR工程下的" Configure\IIR_In_Time.graphProp"后点击OK,出现如下原始时域信号+噪声波形: 点击CCS菜单"Tools->Graph->SingleTime",在弹出的界面中点击Import按钮,选择IIR工程下的" Configure\IIR_Out_Time.graphProp"后点击OK,出现如下原始时域信号波形: 点击CCS菜单"Tools->Graph->FFTMagnitude",在弹出的界面中点击Import按钮,选择IIR工程下的"Configure\IIR_In_FFT.graphProp"后点击OK,出现如下滤波后频域信号+噪声波形: 击CCS菜单"Tools->Graph->FFTMagnitude",在弹出的界面中点击Import按钮,选择IIR工程下的"Configure\IIR_OuT_FFT.graphProp"后点击OK,出现如下滤波后频域信号波形: MatlabIIR滤波器辅助设计 打开Matlab软件,并打开

第19期 FM脑科学新闻| 抑郁和认知障碍治疗新思路;大鼠也有同理心;视蛋白跨界啦

我们两清 提交于 2020-08-06 08:50:11
导读:行万里、刘厚、lhx、皮皮佳、circle 责编:Zhu Xiao 配音:小胡 背景音乐:iMovie主题声音 排版:麋鹿 FM脑科学新闻 | 抑郁和认知障碍治疗新思路;大鼠也有同理心;视蛋白跨界啦 ​ mp.weixin.qq.com Neuron|认知障碍者的救赎—米诺环素 生命因何而存在?不仅仅是我们的肉体,更重要的是我们与外在世界的互动,而这与β、γ波振荡密不可分。β、γ波,是脑电波中的2个种类,β波是我们维持清醒状态的基础,使我们对周围事物保持敏感性;γ波则与丘脑-皮层系统有关,具有易化突触可塑性以及调节神经网络的作用。有这么一群不幸的人,在出生时前额叶皮层浅层中的锥体神经元发生异常,导致β-γ波振荡出现混乱,引起认知障碍。他们无法学习,无法与人正常交流,给家人带来了无尽的痛苦和烦恼。 米诺环素(Minocycline)是一种广谱抗菌的四环素类抗生素,能与tRNA结合达到抑菌的效果。已证明米诺环素可以减轻因压力引发的炎症,减少精神分裂症患者小胶质细胞的病变,而小胶质细胞是大脑早期发育过程中的关键参与者,对神经元功能和心理发展具有深远影响。Mattia Chini团队的研究发现,在产后的第一个星期给予接受环境打击及相关基因(DISC1)敲除的双重打击小鼠米诺环素,可以弥补神经元的缺陷并恢复一定的认知能力,为早期认知障碍的治疗提供了新的方向。(导读 行万里) 文章链接:

干货分享丨jvm系列:dump文件深度分析

岁酱吖の 提交于 2020-08-06 07:42:09
摘要: java内存dump是jvm运行时内存的一份快照,利用它可以分析是否存在内存浪费,可以检查内存管理是否合理,当发生OOM的时候,可以找出问题的原因。那么dump文件的内容是什么样的呢? JVM dump java内存dump是jvm运行时内存的一份快照,利用它可以分析是否存在内存浪费,可以检查内存管理是否合理,当发生OOM的时候,可以找出问题的原因。那么dump文件的内容是什么样的呢?我们一步一步来 获取JVM dump文件 获取dump文件的方式分为主动和被动 i.主动方式: 1.利用jmap,也是最常用的方式:jmap -dump:[live],format=b,file= 2.利用jcmd,jcmd GC.heap_dump 3.使用VisualVM,可以界面操作进行dump内存 4.通过JMX的方式 MBeanServer server = ManagementFactory.getPlatformMBeanServer(); HotSpotDiagnosticMXBean mxBean = ManagementFactory.newPlatformMXBeanProxy(server, "com.sun.management:type=HotSpotDiagnostic", HotSpotDiagnosticMXBean.class); mxBean

spring中BeanFactory和FactoryBean的区别

我怕爱的太早我们不能终老 提交于 2020-08-06 06:57:19
区别:BeanFactory是个Factory,也就是IOC容器或对象工厂,FactoryBean是个Bean。在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似 1、 BeanFactory BeanFactory定义了IOC容器的最基本形式,并提供了IOC容器应遵守的的最基本的接口,也就是Spring IOC所遵守的最底层和最基本的编程规范。在Spring代码中,BeanFactory只是个接口,并不是IOC容器的具体实现,但是Spring容器给出了很多种实现,如 DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等,都是附加了某种功能的实现。 Java代码 package org.springframework.beans.factory; import org.springframework.beans.BeansException; public interface BeanFactory { String FACTORY_BEAN_PREFIX = "&"; Object getBean(String

RCNN极其细致初学者阅读笔记

。_饼干妹妹 提交于 2020-08-06 06:48:43
版权声明:本文由 Kathy 投稿 1、 Introduction 1.1 R-CNN and SPPnet R-CNN的弊端: 多阶段(3)的训练过程 训练的时间和空间开销大 速度过慢 R-CNN的问题症结在于其不能共享计算,而SPPnet改进了这个问题,通过对整张图卷积得到特征图,从这张特征图上进行region proposal而能够共享卷积的计算结果,加速了 R-CNN;后通过空间金字塔池化实现了任意尺度图像的输入。 SPPnet的问题在于:训练仍是多阶段的;特征提取后仍需存放到磁盘造成大的开销;不像R-CNN,其微调算法不能更新金字塔池化之前的卷积层,从而限制了网络的深度。 1.2 contribution 提出Fast R-CNN,其优点为: 更高的检测精度mAP 训练时单阶段的 训练过程可以更新所有层网络参数 无需为特征图缓存消耗内存 2、 Fast R-CNN architecture and training 网络结构为: 输入整张图片,通过卷积池化提取特征图 在特征图上提取RoI (region of interest),相当于region proposal 阶段。 RoI Pooling输出固定尺寸的RoI特征图(尺度降为1的简易版SPP) FCs映射得到固定维度的特征向量 对特征向量分别进行分类(获得K+1维结果,类别+背景)和回归(获得K4维结果

无限极分类查询

孤人 提交于 2020-08-06 06:24:43
public function allClassify () { $model = new ClassifyLogic (); $list = $model -> getList ( '' , '' , '' ); foreach ( $list as $k => $v ) { $cat_class [ $k ][ 'id' ] = $v [ 'id' ]; $cat_class [ $k ][ 'cate_name' ] = $v [ 'cate_name' ]; $cat_class [ $k ][ 'pid' ] = $v [ 'pid' ]; $getSon = $this -> get_child_tree ( $v [ 'id' ], 1 ); if ( $getSon ) { $cat_class [ $k ][ 'child' ] = $this -> get_child_tree ( $v [ 'id' ]); } } foreach ( $cat_class as $v ) { if ( $v [ 'pid' ] != 0 ) { unset ( $v ); } $new_list [] = $v ; } $list = array_filter ( $new_list ); return json_encode ([ 'code' => 0 ,