Java程序禁用SSL认证存在安全风险

2023-11-30

我们的团队会抓取网站以使我们的信息保持最新。我遇到了抓取HTTPS页面时的安全异常。问题在于 Java 在接受页面自签名证书时存在问题。

我没有保留要接受的证书列表(将来可能很难维护),而是使用 neu242 提供的解决方法来禁用 SSL 证书验证.

public static void disableCertificateValidation() 
{
    // Create a trust manager that does not validate certificate chains
      TrustManager[] trustAllCerts = new TrustManager[] { 
        new X509TrustManager() {
          public X509Certificate[] getAcceptedIssuers() { 
            return new X509Certificate[0]; 
          }


        @Override
        public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException
        {
            // TODO Auto-generated method stub

        }
        @Override
        public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException
        {
            // TODO Auto-generated method stub

        }
      }};

      // Ignore differences between given hostname and certificate hostname
      HostnameVerifier hv = new HostnameVerifier() {

        @Override
        public boolean verify(String arg0, SSLSession arg1)
        {
            // TODO Auto-generated method stub
            return true;
        }
      };

      // Install the all-trusting trust manager
      try {
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        HttpsURLConnection.setDefaultHostnameVerifier(hv);
      } catch (Exception e) {}
}

当然,这带来了重大的安全风险。但是,如果我仅在下载程序(下载图像和 pdf 文档的程序)中使用此代码,并且不使用该程序发送任何敏感信息,那么存在哪些安全风险?据我了解,此信任管理器将仅为正在运行的 JVM 设置(运行该程序的服务器不会在操作系统级别禁用证书验证)。此外,如果我对图像和文档的请求被拦截,我的代码将尝试分别将响应形成图像或 pdf,并且不会启动任何恶意软件。是否存在我遗漏的安全风险?


您面临的风险是恶意服务器可能会将其自身置于您和源服务器之间(这是中间人攻击)。换句话说,您会认为您从真实服务器收到文档,但实际上您会从盗版服务器收到文档。所以这取决于文件的类型以及您如何处理它们......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java程序禁用SSL认证存在安全风险 的相关文章

  • Eclipse 在源代码管理中保存操作

    我们希望找到一种在签入之前执行代码标准的 轻量级 方法 我们真的很喜欢使用 Eclipse 内置的想法保存操作 go to Preferences gt gt Java gt gt Editor gt gt Save Actions 其中有
  • Hibernate注解放置问题

    我有一个我认为很简单的问题 我见过两种方式的例子 问题是 为什么我不能将注释放在字段上 让我举一个例子 Entity Table name widget public class Widget private Integer id Id G
  • 如何创建一个显示 Spinners 的 x 和 y 值的表格?

    我想创建一个位于图表右侧的表格 其中显示 2 列 x 和 y 值已输入到xSpin and ySpin旋转器 我已经画了一张我想要桌子放置的位置的图 我尝试过在网格窗格布局中使用文本框来创建表格并将值直接输入到文本框网格中 但是我无法将它们
  • Java:迭代 Collection 的最佳方法(此处为 ArrayList)

    今天 当我看到一段我已经使用了数百次的代码时 我很高兴地开始编码 迭代集合 此处为 ArrayList 出于某种原因 我实际上查看了 Eclipse 的自动完成选项 这让我想知道 在什么情况下以下循环比其他循环更好使用 经典的数组索引循环
  • Java:如何从转义的 URL 获取文件?

    我收到了一个定位本地文件的 URL 事实上我收到的 URL 不在我的控制范围内 URL 按照 RFC2396 中的定义进行有效转义 如何将其转换为 Java File 对象 有趣的是 URL getFile 方法返回一个字符串 而不是文件
  • 正则表达式拆分数字和字母组,不带空格

    如果我有一个像 11E12C108N 这样的字符串 它是字母组和数字组的串联 如何在中间没有分隔符空格字符的情况下分割它们 例如 我希望分割结果为 tokens 0 11 tokens 1 E tokens 2 12 tokens 3 C
  • 按第一列排序二维数组,然后按第二列排序

    int arrs 1 100 11 22 1 11 2 12 Arrays sort arrs a b gt a 0 b 0 上面的数组已排序为 1 100 1 11 2 12 11 22 我希望它们按以下方式排序a 0 b 0 首先 如果
  • 如何安全地解决这个 Java 上下文类加载器问题?

    我的数百名用户中只有一位在启动我的 Java 桌面应用程序时遇到问题 他只有大约三分之一的时间开始 另外三分之二的时间在启动时抛出 NullPointerException Exception in thread AWT EventQueu
  • 在 S3 中迭代对象时出现“ConnectionPoolTimeoutException”

    我已经使用 aws java API 一段时间了 没有遇到太多问题 目前我使用的是库 1 5 2 版本 当我使用以下代码迭代文件夹内的对象时 AmazonS3 s3 new AmazonS3Client new PropertiesCred
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • Java 8 流 - 合并共享相同 ID 的对象集合

    我有一系列发票 class Invoice int month BigDecimal amount 我想合并这些发票 这样我每个月都会收到一张发票 金额是本月发票金额的总和 例如 invoice 1 month 1 amount 1000
  • react-native run-android 失败并出现错误:任务 ':app:dexDebug' 执行失败

    我使用的是 Windows 8 1 和react native cli 1 0 0 and react native 0 31 0 添加后react native maps对于该项目 我运行了命令react native upgrade并给
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • Struts 2 + Sitemesh 3 集成 - FreemarkerDecoratorServlet 中的 NPE

    我将 Struts 2 版本 2 3 14 3 与 Sitemesh 3 版本 3 0 alpha 2 一起使用 并且在某些情况下遇到 NullPointerException 首先 这是我的 web xml 中的 struts2 site
  • 如何在JSTL中调​​用java方法? [复制]

    这个问题在这里已经有答案了 这可能是重复的问题 我只想调用不是 getter 或 setter 方法的方法例如 xyz 类的 makeCall someObj stringvalue Java类 Class XYZ public Strin
  • 测试弱引用

    在 Java 中测试弱引用的正确方法是什么 我最初的想法是执行以下操作 public class WeakReferenceTest public class Target private String value public Targe
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树
  • 评估 CRC-32 实现中的差异

    我见过相同基本 CRC 32 算法的许多不同实现 如下所示 int remain int sbox SIZESBOX int dividend int bit for dividend 0 dividend lt SIZESBOX divi

随机推荐

  • MySQL选择匹配字符串的最大长度

    我需要返回共享搜索字符串共有的最大长度左界子字符串的所有文本结果 如果有 假设在包含以下内容的表列中搜索 StackOverflow Stack Sta StackOv StackOverthrow StackOverSlow StackF
  • SiriKit 对一般服务的支持

    我在 wwdc 上看过 SiriKit 并阅读了文档 https developer apple com library prerelease content documentation Intents Conceptual SiriInt
  • 如何冻结表格的标题和左列

    我想修复表格的标题和左侧 3 列 但我只找到了一种合适的解决方案 这是链接 http hazaa com au blog how to create an html table with frozen headers and columns
  • 是否可以使用 linq 运行查询来搜索一段时间?

    问题详情 SQL Server 2005 实体框架 4 0 我正在尝试使用 linq 仅运行一段时间的查询 示例 我有以下内容datetime我的服务器中的数据 30 03 2012 12 53 22 30 03 2012 17 23 29
  • 我可以使用表单仅发布 json 字符串(不带“name=”)吗?

    我正在尝试将 json 数据发布到我无法控制的 URL API文档说只接受json数据 我在想是否可以使用html表单来简化它 这里有很多关于如何 使用表单发布 json 数据 的帖子 但没有一个适用于我的情况 问题是 据我所知 如果你使用
  • 控制器中的 MVC Core SelectList 下拉菜单错误“Microsoft.AspNetCore.Mvc.Rendering.SelectListItem”

    我想在 MVC 中创建一个 SelectList Dropdown 我更喜欢选择列表位于存储库中 而不是控制器中 如何调用存储库 甚至不引用模型中的字段名称 我唯一想参考的是存储库 我收到此 Microsoft AspNetCore Mvc
  • 表中每行的边框半径

    我有这样的表格 我想将样式应用到带有圆角的每一行 table tr td Month td td Savings td tr tr td January td td 100 td tr tr td February td td 80 td
  • 使用 PowerShell 将 Windows 用户添加到本地 SQL Server

    我想使用 PowerShell 将现有本地用户作为系统管理员添加到 SQL Server 经过一些研究 到目前为止我有以下脚本 Username JohnDoe System Reflection Assembly LoadWithPart
  • 如何重新定位 Chrome 开发者工具

    默认情况下 这些工具在 Chrome 窗口的底部打开 对于宽屏显示器来说 这是一个相当糟糕的选择 因为右侧有大量的空白空间 但没有太多的垂直空间可供使用 不幸的是 我找不到重新定位工具的方法 我想把它们放在一边 类似于萤火虫 与我想要的类似
  • CMake 无法确定目标的链接器语言:fileloader

    我知道已经有一些关于这个主题的线程 但是 在阅读其中许多线程后 我无法找到解决我的问题的方法 我正在开发文件加载器 解析器 并且是第一次使用 CMake 我的 CMakeList txt 文件用于导入 XML 解析器 xerces 当前如下
  • Pygame 按键/按键

    我正在为学校的计算机俱乐部制作一个小马里奥 好吧 作为团队的一部分 无论如何 我在使用 keyup keydown 命令时遇到了一些麻烦 这是我的代码 1 Import library import pygame from pygame l
  • WooCommerce 更改加载微调器图标

    IM 尝试更改 WooCommerce 加载旋转图标 它在 woocommerce css 中定义 woocommerce blockUI blockOverlay before height 1em width 1em display b
  • 如何配置应用程序以在具有高 DPI 设置(例如 150%)的计算机上正确运行?

    我用 C 创建了一个简单的 Winforms 应用程序 当我在具有高 DPI 设置 例如 150 的计算机上运行应用程序时 应用程序会放大 到目前为止 一切都很好 但所有文本也只是按比例放大 而不是使用更大的字体大小渲染字体 这当然会导致文
  • 鼠标光标与画布不匹配

    我有一个问题 当我在画布上画一条线时 似乎鼠标位置与画布位置不匹配 所以每当我画画时 光标和画线之间都有一定的距离 请帮助我这个问题 这是我的代码 document ready function context document getEl
  • 卸载矩阵并释放内存

    我可以从文本文件加载矩阵 load mydata txt 问题是我的矩阵文件大约有 250Mb 经过几次这样的加载后 我没有内存来处理下一个文件 如何卸载它并释放资源以供进一步使用 Use clear or 清除变量 默认情况下 MATLA
  • Swift 2.2,包含方法不起作用

    包含方法无法正常工作 即使它与对象匹配 它也会给我错误的结果 我的代码如下 class Generic NSObject NSCoding var genericCode String var genericName String var
  • 为什么 PostgreSQL 适配器 psycopg2 在 Google App Engine dev_appserver.py 中失败?

    我想将 GAE 中的应用程序与 ElephantDB 连接起来 我想使用 lib psycopg2 但发现了一个问题 我在本地安装了该库来测试它并完美运行 然后我将该库安装在我的应用程序的 lib 文件夹中 就像我对其他库所做的很多次一样
  • 命名空间和类同名吗?

    我正在组织一个图书馆项目 并且有一个名为的中央管理器类Scenegraph以及位于 Scenegraph 命名空间中的一大堆其他类 我真正想要的是场景图MyLib Scenegraph和其他类别MyLib Scenegraph 但似乎唯一的
  • AngularJS UI-Router:在应用程序加载之前预加载 $http 数据

    我需要使用过 ui router 插件的 AngularJS 专家的帮助 有人可以提供一个在应用程序运行之前预加载 http 数据请求的 plunker 示例吗 我做了一些研究 但最接近的是这两个堆栈溢出 AngularJS 如何在应用程序
  • Java程序禁用SSL认证存在安全风险

    我们的团队会抓取网站以使我们的信息保持最新 我遇到了抓取HTTPS页面时的安全异常 问题在于 Java 在接受页面自签名证书时存在问题 我没有保留要接受的证书列表 将来可能很难维护 而是使用 neu242 提供的解决方法来禁用 SSL 证书