当前位置: 首页 > news >正文

微信网站开发哪家好seo小白入门教学

微信网站开发哪家好,seo小白入门教学,广西 经营性网站备案,网页游戏排行榜源码javaagent技术#xff0c;实现提前加载类字节码实现hook#xff0c;插桩技术 javassist技术ASM字节码技术 像加载jar#xff0c;有两种方式 premain启动前加载#xff1a;每次变动jar包内容#xff0c;都需要进行重启服务器利用java的动态attch加载原理#xff0c;采用pr…javaagent技术实现提前加载类字节码实现hook插桩技术 javassist技术ASM字节码技术 像加载jar有两种方式 premain启动前加载每次变动jar包内容都需要进行重启服务器利用java的动态attch加载原理采用probe技术实现动态加载jar包容易重写方法 十分清晰的插桩流程图使用了javaAgent、插桩技术 java文件运行原理 OpenRASP是怎么进行插桩操作 启动时候进行了插桩操作当有类被 ClassLoader 加载时候所以会把该类的字节码先交给自定义的 Transformer 处理自定义 Transformer 会判断该类是否为需要 hook 的类如果是会将该类交给 javassist 字节码处理框架进行处理javassistjavassist 框架会将类的字节码依照事件驱动模型逐步解析每个方法当触发了我们需要 hook 的方法我们会在方法的开头或者结尾插入进入检测函数的字节码把 hook 好的字节码返回给 transformer 从而载入虚拟机 个人理解【插桩】 无论是哪种插桩方式都是以类加载后修改class文件的字节码为主可以看出来OpenRasp是借助javassist进行对关注类两头监听查看里面的行为是否违规大致流程就是一个关注类被加载了拿这个类的class文件对文件的字节码进行修改成自己想要的class然后在放回去载入JVM进行执行原本那个class文件就直接放弃了好处就是源代码没有修改只是修改了class文件。 注意OpenRASP是启动前加载的所以所有的类模块加载都是在启动前就已经换成自己想要的字节码了每当调用关注类时就不会调用原来的代码而是调用编写好的代码强化的代码模块 OpenRasp是如何进行请求处理 服务器收到一个请求从而进入了服务器的请求 hook 点服务器发起SQL查询进入 SQLStatementHook 点我们挂钩了 execute、executeUpdate、executeQuery 等方法从该方法进入检测流程如下 判断当前线程是否为请求线程第一步标记的如果是继续下面检测采集 connection_id这个字段仅JDBC支持、SQL 语句以及数据库类型 等信息构建参数信息调用本地插件和 JS 插件进行安全检测JS 插件由 Rhino 引擎执行Rhino 引擎执行是 mozilla 为 java 提供的 JavaScript引擎该引擎会将 JS 代码编译为 java 的 class 字节码在 JVM 中运行Rhino 引擎文档根据插件的执行结果决定是拦截请求、放行还是仅打印日志 进入 SQLResultSetHook 点我们挂钩了 resultSet.next 方法 调用本地插件检查是否发生拖库行为默认策略为一次查询结果超过500条就报警 若决定拦截攻击 输出报警日志到 logs/alarm.log如果header还没有发出默认使用 302 跳转到拦截页面如果body还没有发出则重置未发送的body输出自定义拦截页面跳转js脚本 javassist技术 在一个测试jar包执行前提前执行编写好的permain函数将原本的测试jar的字节码替换成自己想要的字节码然后再放回去JVM只执行我修改好的class文件转义后这个代码就拥有自我监控和拦截功能就达成了无入侵自我保护。 ASM技术和Javassist技术的差异 先说说相同点这两个技术都是java字节码修改技术都可以对未加入JVM的class文件进行修改。不同之处ASM主要是通过字节码进行修改而javassist是通过java代码进行修改的直接看下他们之间代码就懂了同一份java代码看下他们二者的区别 // 修改前public void test(String args) {System.out.println(rasp Test,正常通过);} // 修改后 public void test(String var1) {SqlFilter var3 new SqlFilter();if (var3.filter(var1)) {throw new SQLException(invalid sql because of security check);} else {System.out.println(rasp Test,正常通过);}}// 添加部分SqlFilter var3 new SqlFilter();if (var3.filter(var1)) {throw new SQLException(invalid sql because of security check);} else {// 原本代码 XXXX}看下ASM进行插桩 mv.visitTypeInsn(NEW,com/wu/javaagent01/filter/SqlFilter);mv.visitInsn(DUP);mv.visitMethodInsn(INVOKESPECIAL,com/wu/javaagent01/filter/SqlFilter,init,()V,false);mv.visitVarInsn(ASTORE,3);mv.visitVarInsn(ALOAD,3);mv.visitVarInsn(ALOAD,1);mv.visitMethodInsn(INVOKEVIRTUAL,com/wu/javaagent01/filter/SqlFilter, filter,(Ljava/lang/Object;)Z,false);mv.visitJumpInsn(IFEQ, l92);mv.visitTypeInsn(NEW, java/sql/SQLException);mv.visitInsn(DUP);mv.visitLdcInsn(invalid sql because of security check);mv.visitMethodInsn(INVOKESPECIAL, java/sql/SQLException, init, (Ljava/lang/String;)V, false);mv.visitInsn(ATHROW);mv.visitLabel(l92);mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);再看看javassist对这个代码如何插桩的 ClassPool classPool ClassPool.getDefault(); CtClass ctClass classPool.get(YourClassName); // 替换成你的类名CtMethod ctMethod ctClass.getDeclaredMethod(checkListFiles);CtClass exceptionClass classPool.get(java.sql.SQLException);// 创建异常抛出代码块 CtConstructor exceptionConstructor exceptionClass.getDeclaredConstructor(new CtClass[] { classPool.get(java.lang.String) }); CtConstructor ctConstructor ctClass.getClassInitializer(); ctConstructor.insertAfter({ if (condition) { try { throw new java.sql.SQLException(\invalid sql because of security check\); } catch (java.sql.SQLException e) { e.printStackTrace(); } });// 保存修改后的字节码ctClass.writeFile(); } catch (Exception e) {e.printStackTrace(); }
http://www.dnsts.com.cn/news/3025.html

相关文章:

  • wordpress postmeta优化关键词方法
  • 北京网站优化和推广招商外包
  • 淘宝优惠券私人查券网站怎么做国际婚恋网站排名
  • 单位网站备案系统优化软件
  • 谁会在掏宝网上做网站上海百度推广电话客服
  • 哪些网站是用c语言做的国际重大新闻事件10条
  • 网站的差异网络营销工程师前景
  • 南昌汉邦网站建设seo案例
  • 仿网站建设教程视频厦门百度seo
  • 网站优化qq群网建公司
  • 线上销售平台如何推广成都自动seo
  • 怎么做网站广告卖钱上海seo优化外包公司
  • 万网ecs网站环境搭建全网营销式网站
  • 专门做网站的公司与外包公司海外发布新闻
  • 网站维护 内容软文网站推广
  • 怎么样在网站上做跳转360seo排名点击软件
  • 域名做网站腾讯企业qq官网
  • 网站建设改版西安危机公关公司
  • 义乌国际贸易综合信息服务平台清理优化大师
  • 旅行网站开发意义网络黄页推广软件哪个好
  • 门户网站开发流程小程序开发需要哪些技术
  • 科技网站推荐营销方案怎么写
  • 网站建设费用计算常用的搜索引擎有
  • 做网站主要来源seo是什么意思为什么要做seo
  • 怎么给网站添加黑名单地推平台去哪里找
  • 做网购的有哪几个网站竞价推广sem
  • 专做外贸的网站二级子域名ip地址查询
  • 杭州做网站公司百度搜索关键词排名人工优化
  • 做网站公司在哪企业管理培训班
  • 国外自建站怎么样西安网络推广外包公司