干货 | IAST安全测试如何防止数据污染

深入解析IAST Agent插桩技术:从JavaAgent到安全检测实战 本文深入解析IAST Agent插桩技术,从JavaAgent基础到安全检测实战,详细介绍了IAST技术的核心原理、JavaAgent工作机制、字节码修改技术选型及生产环境优化方案。通过实际案例和代码示例,帮助开发者掌握IAST插桩技术,提升应用安全检测能力。 阅读详情

作者简介

 

Eric,携程资深开发工程师,关注应用安全、渗透测试方面的技术和相关开源产品的二次开发。

一、前言

携程信息安全部门目前在研究百度OpenRASP技术,让它在携程落地进行服务漏洞扫描防护。做安全漏洞测试的同学都知道,用类似黑盒测试工具测试服务漏洞的时候,在测试服务接口的请求上做参数注入的修改,会污染测试服务的数据源,OpenRASP技术也不例外。

本文主要讲述我们IAST漏洞扫描系统中OpenRASP在携程快速部署及如何防止流量重放对数据污染的一系列实践经验。让业务部门无感知地发现他们的服务在测试环境中暴露的漏洞。

 

这里先简单介绍下什么是IAST,DAST和RASP。

IAST:Interactive Application Security Testing,交互式应用安全测试。近实时检测、误报率极低、可定位到代码行数、展示污点调用过程等等,非常适用于敏捷开发和DevOps理念。可以在软件的开发和测试阶段无缝集成现有开发流程,让开发人员和测试人员在执行功能测试的同时,无感知的完成安全测试,解决了现有应用安全测试技术面临的挑战。我们该套IAST产品中也会尽力体现污点调用过程,偏向代码层。

 

DAST:Dynamic Application Security Testing,动态应用程序安全测试。在测试或运行阶段分析应用程序的动态运行状态。它模拟黑客行为对应用程序进行动态攻击,分析应用程序的反应,从而确定该Web应用是否易受攻击。这种技术主要采用渗透测试,发现应用系统的潜在风险。

 

RASP:Runtime Application Security Testing,运行时应用安全测试。很多企业在上线前进行漏洞检测,都要求解决高中危漏洞,在业务紧急上线的情况下,低危漏洞往往可以选择性地忽略,DevOps因为强调速度,这种情况会更多。但是作为一个安全人员或者项目经理,忽略低危漏洞真的放心吗?攻击者可能不会通过这些低危漏洞来直接攻击业务,但是往往会成为攻击链中的一环,获取某些敏感信息等,那RASP的作用就是,在运维阶段继续针对性的保护那些被忽略的低危漏洞。

 

二、挑战

IAST/RASP的原理在这里就不介绍了,其主要优点就是检测精准。技术是好技术,但要在企业中大规模部署,缺点也很明显:

1)因为在从IAST agent(OpenRASP)回传的流量会再次通过黑盒扫描工具DAST(修改请求参数)重放流量,这会给待测试的服务造成数据污染。对于测试人员,这会影响到服务的测试流程,进而影响测试人员在服务里接入IAST Agent的意愿。目前业界也没有很好的方案来解决IAST黑盒测试产生的脏数据,如新思seeker只是通过其他机制减少脏数据的产生。

2)要实现大规模部署,携程集团有几千个应用系统、上万台服务器的适配、测试、部署、维护…推广和维护工作太重。虽然在c0debreak大佬团队的努力下,rasp agent对服务器的性能影响已控制到3%左右。但在旅游交易系统中,我们也不敢轻易上到生产环境“玩火”,只能将目标锁定在测试环境上。通过PAAS发布系统,在docker容器的镜像中直接打上IAST agent包来部署推广。

3)目前服务落地的数据一般是放到:关系数据库系统,缓存(redis和memcache),ElasticSearch,消息队列(kafka,qmq,hermes)中,如何做到流量重放产生的脏数据不落地。关键是落地组件数量多,如何做到一次性一劳永逸地解决掉。

 

三、找到问题

通常认知是,我们了解到数据落地的组件(DB,redis,ElasticSearch等)都是通过网络来传送数据的,在这些组件的java实现中,我们很自然地就想到他们是使用java中套接字Socket来发送数据的,所以研究方法就是在Socket上做文章。

如何证实我们的猜测呢?那就是在这些落地组件读写数据时,通过java方法调用链是否能找到Socket的读写方法。

我们用到字节码操作工具byte buddy,实现java方法调用链展示,主要跟踪了以下数据落地组件发送数据的调用链。

 

另一种方法就是本地调试看这些落地组件是否运行了Socket对象的输出流写数据的方法。

 

四、IAST部署架构及数据污染的处理方案

 

IAST/DAST部署架构

 

在携程实践的IAST(agent被动检测+分布式扫描器主动扫描)分为下面4个部分:

1)IAST agent

集成到测试环境应用docker容器的agent,hook tomcat底层调用,用来检测应用中的漏洞,同时会把所有访问到应用docker的http流量复制回传到用于收集流量的kafka消息队列。

2)IAST服务管理端

管理IAST agent和漏洞详情展示统计分析的控制台。

3)流量回传的kafka消息队列

用于收集待扫描的流量,除了从IAST agent回传的流量,还有来自主动爬虫、chrome插件以及提测平台调用api发送过来的流量。

4)分布式扫描器

消费kafka里的流量并且按照url去重,调用扫描器进行漏洞扫描。

 

这样一套架构的好处在于:

 

  • 扫描覆盖率高:只要正常功能测试能覆盖的流量都能被扫到

  • 漏洞检出率高:IAST+DAST双重检测

  • 误报率低:IAST的特性决定的低误报

 

这套扫描系统在少量应用灰度期间就发现了内部存在已久未被发现的通用型漏洞,对于内部安全检测能力的补齐提供了很好的帮助。

 

IAST流量重放产生数据污染的处理方案

 

利用JDK Instrumentation API我们可以提供一个Agent代理用来监测和协助运行在JVM上的程序,可以在程序启动前修改类的定义。简单来说就是在运行的应用中织入一个我们的程序。而在这个程序中我们就拥有了获取当前应用的上下文,在应用运行中实时分析数据流以及调用栈的能力。

插桩技术是在保证目标程序原有逻辑完整的情况下,在特定的位置插入代码段,从而收集程序运行时的动态上下文信息。在Java中插桩通过Instrument以及字节码操作工具(如:ASM,Javassist,Byte Buddy等)实现。Instrumentation会使用类ClassFileTransformer的transform方法对jvm中的未加载的类进行重写。已经加载过的类可以使用retransform去进行重写。

 

IAST agent技术其实主要就是对编程语言的底层函数进行插桩hook,毕竟再怎么编码转换以及调用,最后肯定会去执行最底层的某个方法然后对系统进行调用。由此可以反推出其hook点。在第三小节,我们了解到数据落地组件是在网络层发送数据包的,我们就在Socket输入输出流上的读写方法进行字节码操作插桩hook拦截处理。

 

下图展示的是iast agent启动加载处理脏数据的流程,关键点是通过字节码操作工具在程序里使用SocketOutputStream输出流对象调用方法write之前,加入代码判断是否是安全重放的流量,进行拦截发送的脏数据,并重定向到特定提示页面。

 

重放拦截关键代码如下:

 

五、总结

 

字节码操作技术能解决很多其他场景的问题,如IntelliJ Idea 的代码调试Debug,应用热部署等。本文主要讲述的就是在Socket输入输出流的方法上,进行字节码修改插桩来防止脏数据落地。

 

对于在java中使用BIO流(Block Input/Output,它是基于流模型实现的,交互的方式是同步、阻塞方式,也就是说在读入输入流或者输出流时,在读写动作完成之前,线程会一直阻塞在那里,它们之间的调用是可靠的线性顺序)进行通信的组件(关系型数据库MySql DB,redis)来插装hook SocketOutputSteam的write写数据方法,隔离避免脏数据的产生,不影响服务的测试流程。这种字节码操作技术能拦截所有使用Socket流来发送接收的数据。

【推荐阅读】

《携程架构实践》

京东

当当

《携程人工智能实践》

京东

当当

 “携程技术”公众号

  分享,交流,成长

一、两电平IGBT整流器 电压源换流器(Voltage source converter,VSC)连接交流主网和直流电网,起到交直流网络连接、功率输送和电能变换的作用。采用电压控制手段可维持直流电压的稳定;或采用功率控制手段保证系统功率输出达到预期。VSC的三相电压平衡方程如式(1)所示:式中,igx和ugx分别表示主网三相电流与电压(x=a,b,c);ucx表示换流器VSC 交流输出电压;Rg表示交流主网等效电阻;Lg表示交流主网等效电感。 阅读详情

相关推荐

KNX智能家居工程设计应用

KNX,是一个起源于欧洲的总线标准,主要应用于家居和楼宇中,对末端电气设备进行总线式的控制,比如照明、空调、地暖、电动窗帘和遮阳设备等等。根据2017年英国著名咨询公司BSRIA的数据报告显示,在中国的智能家居和灯光控制市场,KNX产品的市场份额为各类产品中排名第一,占据了42%的市场份额,远远领先于其他的标准协议。设备中一个继电器表示一路输出,某些功能可能需要用到多个输出,比如1个窗帘AC输出需要占用两路继电器输出,一个继电器用于控制正转,一个用于控制反转,而普通开关输出则需要占用一路继电器输出即可。

hhhh5555666的博客 934

XSS跨站脚本攻击:从原理到实战防御的完整指南

跨站脚本攻击(XSS)是Web安全领域的核心威胁之一,其原理在于攻击者能够将恶意脚本注入到受信任的网页中,当用户浏览时脚本在浏览器端执行。这种攻击的技术价值在于它能够绕过同源策略,直接窃取用户Cookie、会话令牌等敏感信息,甚至篡改页面内容。在实际应用场景中,XSS常见于用户输入点如搜索框、评论区和表单提交处,攻击者通过构造恶意Payload实现攻击。本文基于Pikachu靶场实战,深入剖析反射型、存储型和DOM型XSS的攻击路径与区别,并系统讲解输入过滤、输出编码、内容安全策略(CSP)等防御方案,帮助

weixin_34186128的博客 398

Java分布式流处理,flink+kafka实现电商网站个性化商品推荐系统

在现代电商环境中,用户每天都会浏览大量商品页面,而这些行为数据中蕴藏着丰富的信息。通过分析用户的浏览历史、购买记录以及对特定商品的兴趣程度,我们可以为用户提供更加个性化的商品推荐,从而提升用户体验和转化率。为了实现实时的个性化推荐,我们需要构建一个能够快速处理并响应用户行为变化的数据处理管道。

横竖撇折点 2144

Android开发——控件EditText, 2.获取EditText输入的数据,通过按钮点击实现,ImageView控件,缩放类型,控件ProgressBar,常用属性详解,进度条设置

【代码】Android开发——控件EditText, 2.获取EditText输入的数据,通过按钮点击实现,ImageView控件,缩放类型,控件ProgressBar,常用属性详解,进度条设置。

WZY22502701的博客 5174

【通信原理 入坑之路】—— 详解IQ调制以及星座图原理

文章目录一. IQ调制与解调的原理与过程二.PSK(相移键控)和IQ调制的关系:2.1 用IQ调制实现QPSK调制 一. IQ调制与解调的原理与过程 IQ调制的定义是:“IQ调制就是数据分为两路,分别进行载波调制,两路载波相互正交。I是in-phase(同相), q是 quadrature(正交)” 我们通过下面的示意图介绍IQ调制的过程: 首先,信号分成两路:I路和Q路(为了方便理解我们把这两...

凝望,划过星空的博客 11万+

使用 Python 和可视化编程控制树莓派机械臂myCobot

这些模块包括逻辑、循环、数学、文本、列表、颜色、变量、函数以及控制机械臂的函数等等,所以用户可以轻松入门编程,只需单击右上角的运行就可以启动程序,做一些有趣的应用。可以搭配任意摄像头进行图像识别,具有4个 USB 端口,可以通过 Raspberry Pi 的微型 HDMI 端口连接到显示器. 最后,40 个GPIO 接头可以进行更多扩展应用,机械臂每个接口都有清晰的标记,面板上还有一个电源开关和一个直流电源插孔。您现在可以将机器人放在地板或桌子上,并用力拧紧吸盘,以确保机械臂的底座在操作过程中不会移动。

m0_62456998的博客 3966

安卓如何将edittext获取到数子传到另一个页面处理_让偶现Bug无所遁形:贝壳自研时光机如何解决前端行业痛点?前端之巅采访实录。...

作者 | 王文婧 采访嘉宾 | 陈辰 编辑 | 张之栋 随着页面展示形态的多样化发展,用户使用环境的日趋复杂,当代监控越来越无力。传统监控可以做到在错误发生时上报错误堆栈信息,甚至更多地引导数据。但当前端出现偶发 Bug 时,最令开发人员困扰,因为它们大大地增加了排查成本。针对偶发 Bug 的问题,贝壳找房于 2019 年年初自研了操作回放系统——时光机,作为灯塔前端监控的扩展系统,时光机通过对用...

weixin_39564524的博客 278

别再只会画方块了!Cesium 1.62 实战:用 Polygon、Ellipse 和 PolylineVolume 玩转复杂地理围栏与3D管道

本文深入探讨了Cesium 1.62在复杂地理围栏与3D管道开发中的高级应用,通过Polygon、Ellipse和PolylineVolume等API实现不规则禁飞区建模、椭圆围栏设计及地下管线可视化。文章结合实战代码,详细解析了性能优化技巧和工程实践,帮助开发者突破基础图形绘制局限,构建真实业务场景中的三维空间系统。

weixin_26763955的博客 106

android获取edittext输入的值,Android-------ListView列表中获取EditText输入的值

最近项目的购物车中用列表中包含了留言功能, 需要获取EditText输入的内容,当购买多件商品时,就有点棘手了。经过查资料解决了这个功能,并写了一个案例;效果图: 可以在商品数据用一个字段来管理留言数据,这样就可以方便的操作了。代码:public class MainActivity extends AppCompatActivity {ListView listView;@Overridepro...

weixin_36415835的博客 1134

VSCode + Latex 配置

1. 安装VSCode VSCode下载 next,next就安装好了。 2. 配置VSCode 2.1 安装LaTeX Workshop插件 install,安装LaTeX Workshop插件 2.2 修改 user setting 点击左下角,进入用户设置 点击上图标记的部分,选择 打开settings.json 具体配置文件如下: { "latex-workshop.la...

一只特立独行的猪 10万+

LeRobot 入门教程(十一)π0(Pi0)π0.5(Pi0.5)训练、推理、部署

本文介绍了Physical Intelligence公司开发的π₀和π₀.₅系列通用机器人控制视觉-语言-动作模型。π₀作为首款基础模型,融合流匹配、跨实体训练等技术,支持50Hz高频控制。π₀.₅是其升级版,通过异构数据协同训练解决开放世界泛化问题,在Libero基准测试中表现优异。文章详细说明了两个模型的安装要求、使用方法、训练策略及关键参数配置,包括混合精度训练、梯度检查点等优化技术,为机器人在多样化场景中的语义理解和动作控制提供了完整解决方案。

2506_90492529的博客 5040

Android : 页面之间的数据传递 intent+bundle

if(requestCode==1 && resultCode==2){ //判断是否为待处理的结果 请求码和回调码一致才行。//获取传递的数据包。//实例化要传递的数据包。

weixin_55439495的博客 3237

自然语言处理之话题建模:BERTopic模型详解

BERTopic是一种基于BERT的先进话题建模技术,它结合了BERT的语义理解能力和非参数聚类算法HDBSCAN的灵活性,能够生成高质量、语义丰富的话题。与传统的LDA(Latent Dirichlet Allocation)话题模型相比,BERTopic能够更好地捕捉文本的复杂语义结构,因为它利用了预训练的BERT模型来嵌入文本,从而在话题建模中引入了深度学习的力量。聚类是无监督学习的一种,其目标是将数据集中的样本按照相似性进行分组,每个组称为一个“簇”。

zhubeibei168的博客 4539

[android] 界面间的数据传输

**界面间的数据传输 ** 1.数据随着页面跳转过程传输到第二个页面 1.1数据从第一个页面传到第二个页面 我们用bundle将数据封装,通过Intenr,调用它的putExtra()方法传输 我们这里使用的跳转方法是之前博客讲的第一种方法 代码如下 public void tosecond(View v){ Intent intent = new Intent(); EditText na...

cp0328的博客 4597

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

简析IAST—Agent篇 | 信息安全

一、IAST简单介绍IAST(Interactive Application Security Testing)交互式应用程序安全测试,通过服务端部署Agent探针,流量代理/VPN或主机系统软件等方式,监控Web应用程序运行时函数执行并与扫描器实时交互,高效、精准的安全漏洞,是一种运行时灰盒安全测试技术。在分析并评估了业界主流的几家IAST产品后,发现IAST一般可以提供agent插桩检测、流量...

360技术 3953

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

洞态IAST Agent正式开源

一、洞态IAST 洞态IAST是一款被动式的交互式安全测试工具,具有漏洞检出率高、误报率低、无脏数据、支持数据包加密/一次性签名/验证码等不支持重放的场景下的漏洞检测、支持微服务/API网关/分布式应用等应用架构下的漏洞检测、支持对移动APP的后端服务器进行漏洞检测等优点。此外,洞态IAST支持在不发送数据包的前提下对历史数据中未出现漏洞的API进行的重复检测,最大可能的检测出漏洞。 1.洞态IAST的原理介绍 IAST的核心技术点有三个: 值传递算法 污点链路梳理 Hook策略 其中,值传递算法

weixin_40418457的博客 5576

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android点击按钮加载数据,Android点击Button将EditText的内容显示到另外一个页面的Listview中。...

1、在第一个Activity的Button点击事件中添加以下逻辑//获取editText文本内容Stringstr=editText.getText().toString();//创建intent对象Intentintent=newIntent(MainActivity.this,第2个Activity的名字.class);//使用putExtra(key,value)方法传递数据i...

weixin_39864387的博客 1114

【某OTA网站加密参数还原生成】

补环境

qq_40979337的博客 4610

安卓如何将edittext获取到数子传到另一个页面处理_技术分享 | 如何在PyPI上寻找恶意软件包...

写在前面的话大约一年前,Python软件基金会(Python Software Foundation,RFI)公开了一个信息请求(RFI),讨论的是如何检测上传到PyPI的恶意软件包,这显然是一个影响几乎每个包管理器的实际问题。事实上,像PyPI这样的包管理器是几乎每个公司都依赖的关键基础设施。这是我感兴趣的一个领域,所以我用我的想法回应我们应该如何去处理这个问题。在这篇文章中,我将详细...

weixin_39880301的博客 186

TCP Socket编程的几点肮脏的问题

TCP Socket编程的几点肮脏的问题 1.有客户端开多线程对服务器进行连接断开压力测试,在连接接近4000次时,再也连接不上服务器,过了段时间后恢复正常,而后再出现,如此往复.使用Prcess Explorer查看System Idle Process发现大量的TIME_WAIT状态下的Socket.解析如下:TCP TIME-WAIT 延迟断开TCP 连接时,套接字对被置于一种称为TIM

Daids' BLOG 1664

andriod studio 获取EditText值进行计算再显示

实现: 将两个EditText内输入的数字进行相加后,在TextView上显示结果。 步骤: 一、布局。 二、java文件。 1、定义变量。 2、修改onCreate. 3、button实现。 一、布局。xml代码。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="h

kim5659的博客 3862

socket丢数据的一个原因

多任务环境中,某任务从socket接收数据,并传给底层处理. 程序结构如下: while(1){ socket receive; Invoke other module handle the received data; } 次任务每收一条数据都发给底层去处理.处理完再收下一条数据. 测试结果丢数据,ethereal上看到客户端已经发送数据,但是这个任务只收到部分数据. 后来...

weixin_33904756的博客 960

Android移动应用开发之EditText及内容获取

android:inputType 文本框的类型,这设置的都是数字类型(可以设置成其他类型,crtl+那行代码就能进去看属性了)。android:hint 是文本框初始化出现的内容(输入后就会消失)android:drawableLeft 设置左边的图片。android:background 设置背景色。getText即可获得里面的内容了。可以自行插入,也可直接复制。

学习笔记 5739

IAST技术知识-Java环境Agent部署知识干货分享

本期【千方百计】主题:Java环境Agent部署知识分享。欢迎在评论区发言、讨论、分享有关IAST的热知识哦!也欢迎广大“路人甲”小伙伴对【甲乙磁场】活动提出问题和建议!我们肥肠希望与【甲乙磁场】的关注者之间触发安全磁力哦!贴贴~...

tcsecXD的博客 696

IAST工具是如何工作的?主动和被动IAST有什么区别?

要确保应用程序的质量和效果,需要使用各种不同的测试方法,包括手动和自动化的测试,以及在生产环境中对应用程序进行测试。我们进一步探索,可以将主动IAST与被动IAST相结合,以被动IAST为主,主动IAST用于辅助验证功能,进行测试,适用范围广,可定位到漏洞代码也无脏数据产生。被动IAST的探针以静默方式持续监视指向应用程序的所有常规流量,在运行时查找漏洞。交互式应用程序安全测试(IAST)使用结合了动态应用程序安全测试(DAST)和静态应用程序安全测试(SAST)技术的工具来提高应用程序安全测试的准确性。

weixin_55163056的博客 1075

同程旅行 IAST 实践

同程旅行 IAST 落地实同程旅行是最先部署洞态 IAST 的企业之一。在未部署 IAST 前,同程旅行的漏洞检测修复速度一定程度上拖慢了应用更新迭代的进度,急需一款高效的自动化漏洞检测工具来提升安全能力。经过一系列的调研与考察,我们感叹于洞态 IAST 强大的检测能力和优越的兼容性,最终选定洞态 IAST 作为自动化漏洞检测的主力工具,整个部署调优的过程也得到了洞态团队的全力支持。以下为同程旅行的 IAST落地实践: 01 安全困境 随着敏捷开发和 DevOps 在同程软件开发上的应用,软件开发明显提效.

weixin_40418457的博客 2316
上一篇: 干货 | 性能提升400%,ClickHouse在携程酒店数仓的实践
下一篇: 干货 | 应用SQL性能风险识别与预警,携程金融支付AppTrace落地实践
携程技术
博客等级 码龄10年 3716粉丝 324原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值