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

html5 微信网站谷歌地图下载

html5 微信网站,谷歌地图下载,鞍山吧,ftp中打开wordpress文章目录 一、原因分析二、解决方案一览三、解决方案代码案例3.1 使用 HTTPS3.2 验证 URL3.3 禁用 JavaScript3.4 使用安全的 WebView 设置3.5 监控网络请求3.6 使用安全的 DNS 四、案例深入分析4.1 问题4.2 分析 五、结论 在 Android 应用开发中,WebView 是一个常用…

文章目录

    • 一、原因分析
    • 二、解决方案一览
    • 三、解决方案代码案例
      • 3.1 使用 HTTPS
      • 3.2 验证 URL
      • 3.3 禁用 JavaScript
      • 3.4 使用安全的 WebView 设置
      • 3.5 监控网络请求
      • 3.6 使用安全的 DNS
    • 四、案例深入分析
      • 4.1 问题
      • 4.2 分析
    • 五、结论

在 Android 应用开发中,WebView 是一个常用的组件,用于在应用内显示网页内容。然而,有时用户可能会发现网页被劫持到另一个不安全的网页。这种情况不仅影响用户体验,还可能带来安全隐患。本文将探讨导致网页被劫持的可能原因,并提供相应的解决方案。

一、原因分析

  1. JavaScript 重定向
    某个网页中包含以下 JavaScript 代码:

    window.location.href = "http://malicious-site.com";
    

    这段代码会在页面加载时将用户重定向到恶意网站。

  2. 恶意网页

    用户点击了一个链接,访问了一个看似正常的网站,但该网站实际上是一个钓鱼网站,包含重定向代码,试图引导用户输入敏感信息。

  3. WebView 设置不当

    开发者在 WebView 中未设置 WebViewClient,导致 WebView 默认行为是打开所有链接,而不是在应用内处理。这可能导致用户被重定向到外部浏览器,增加了被恶意网站劫持的风险。

  4. 拦截 URL 加载

    shouldOverrideUrlLoading 方法中,开发者没有正确处理 URL,例如:

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {// 没有验证 URL,直接加载view.loadUrl(url);return true;
    }
    

    这可能导致用户被重定向到不安全的网站。

  5. 广告或跟踪脚本

    某些网页可能嵌入了广告或跟踪脚本,这些脚本会在用户访问时自动重定向到广告商的网站,甚至可能是恶意网站。

  6. 中间人攻击

    在公共 Wi-Fi 网络中,攻击者可能通过中间人攻击拦截用户的网络请求,并将其重定向到恶意网站,伪装成合法网站。

  7. DNS 劫持

    用户的 DNS 请求被劫持,导致访问某个合法网站时,实际上被重定向到攻击者控制的 IP 地址。例如,用户输入 www.example.com,但由于 DNS 劫持,实际访问的是 malicious-site.com

二、解决方案一览

为了减少网页被劫持的风险,开发者可以采取以下措施:

  • 使用 HTTPS:确保访问的网页使用 HTTPS,这样可以减少中间人攻击的风险。

  • 验证 URL:在 shouldOverrideUrlLoading 方法中,验证即将加载的 URL,确保它是安全的。

  • 禁用 JavaScript:如果不需要 JavaScript,可以考虑禁用它,减少潜在的重定向风险。

  • 使用安全的 WebView 设置:确保 WebView 的设置是安全的,例如启用安全的内容加载策略。

  • 监控网络请求:使用网络监控工具,查看 WebView 中的网络请求,识别潜在的恶意重定向。

  • 使用安全的 DNS:考虑使用安全的 DNS 服务(如 DNS over HTTPS),以减少 DNS 劫持的风险。

三、解决方案代码案例

以下是针对解决方案中提到的每个措施的代码案例,以帮助开发者更好地理解如何在 Android WebView 中实现这些安全措施。

3.1 使用 HTTPS

确保加载的网页使用 HTTPS。可以在加载 URL 前进行检查:

private void loadUrl(WebView webView, String url) {if (url.startsWith("https://")) {webView.loadUrl(url);} else {// 提示用户或处理不安全的 URLToast.makeText(context, "不安全的链接,无法加载!", Toast.LENGTH_SHORT).show();}
}

3.2 验证 URL

shouldOverrideUrlLoading 方法中验证即将加载的 URL:

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {if (isSafeUrl(url)) {view.loadUrl(url);} else {// 提示用户或处理不安全的 URLToast.makeText(context, "不安全的链接,无法加载!", Toast.LENGTH_SHORT).show();}return true;
}private boolean isSafeUrl(String url) {// 这里可以添加更复杂的 URL 验证逻辑return url.startsWith("https://") || url.startsWith("http://trusted-site.com");
}

3.3 禁用 JavaScript

如果不需要 JavaScript,可以在 WebView 设置中禁用它:

WebView webView = findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(false); // 禁用 JavaScript

3.4 使用安全的 WebView 设置

确保 WebView 的设置是安全的,例如启用安全的内容加载策略:

webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_NEVER_ALLOW); // 禁止混合内容
webSettings.setDomStorageEnabled(true); // 启用 DOM 存储

3.5 监控网络请求

使用 WebViewClient 监控网络请求,识别潜在的恶意重定向:

webView.setWebViewClient(new WebViewClient() {@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {super.onPageStarted(view, url, favicon);// 监控页面加载Log.d("WebView", "Loading URL: " + url);}@Overridepublic void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {super.onReceivedError(view, request, error);// 处理加载错误Toast.makeText(context, "加载错误: " + error.getDescription(), Toast.LENGTH_SHORT).show();}
});

3.6 使用安全的 DNS

在 Java 层,DNS 解析由 AddressCache 管理。当未命中缓存时,会调用 Libcore.os.android_getaddrinfo 方法进行域名解析。通过阅读源码发现,解析逻辑由 libc.so 中的 getaddrinfo 方法实现,而 WebView 中的域名解析逻辑也是通过 libwebviewchromium.so 调用这个底层方法。

为了优化 DNS 解析,我们可以使用 inline hook 的方式(具体方案可以参考 ShadowHook)来 hook getaddrinfo 方法。这样可以先查询我们维护的缓存,再进行相应的优化和兜底处理。

以下是一个简单的示例,展示如何使用 ShadowHook 来 hook getaddrinfo 方法:

import com.github.shadowhook.ShadowHook;public class DnsHook {public static void hookGetAddrInfo() {ShadowHook.hook("libc.so", "getaddrinfo", new ShadowHook.HookCallback() {@Overridepublic Object invoke(Object... args) {String hostname = (String) args[0];// 查询自定义缓存String cachedIp = queryCustomDnsCache(hostname);if (cachedIp != null) {// 返回缓存的 IP 地址return cachedIp;}// 调用原始的 getaddrinfo 方法return ShadowHook.callOriginal(args);}});}private static String queryCustomDnsCache(String hostname) {// 实现自定义 DNS 缓存查询逻辑return null; // 返回 null 表示未命中缓存}
}

四、案例深入分析

4.1 问题

用户点击链接A,会跳转到不良网站链接B。这个问题在用户手机上必现。

4.2 分析

  1. 因为用户在任何网络环境都能复现,怀疑是用户android端的系统DNS解析被劫持了。
    验证方法:android端打开华佗诊断的DNS检测页面,发现解析结果为空。在其他浏览器打开链接A,也不会调整到链接B。说明系统的DNS解析没有被劫持。
    检测页面链接:https://itango.tencent.com/app/data/huatuo
    在这里插入图片描述

  2. 通过抓包工具分析,发现没有A域名的请求包。虽然界面上打开的是链接A,但是实际上Webview直接发起了B的请求。
    通过这一点,怀疑是Webview缓存了之前在某个网络环境下的DNS解析结果,默认跳转到了链接B。
    其中抓包工具使用的是:Reqable
    下载链接是:https://reqable.com/zh-CN/android/
    在这里插入图片描述

  3. 删除应用的【缓存】(不需要清除数据),用户恢复正常。验证了确实是Webview在应用沙箱中缓存了解析结果。

五、结论

在 Android WebView 中,网页被劫持的情况可能由多种因素引起,包括 JavaScript 重定向、恶意网页、设置不当等。通过采取适当的安全措施,开发者可以有效降低这些风险,保护用户的浏览体验和数据安全。确保在开发过程中关注这些潜在的安全隐患,将有助于提升应用的整体安全性和用户信任度。


文章转载自:
http://dinncodedal.knnc.cn
http://dinncovolume.knnc.cn
http://dinncopremo.knnc.cn
http://dinncofinancial.knnc.cn
http://dinncocentremost.knnc.cn
http://dinncopostoperative.knnc.cn
http://dinncodescribable.knnc.cn
http://dinncoexperimentalize.knnc.cn
http://dinncoatretic.knnc.cn
http://dinncocyberworld.knnc.cn
http://dinncocentrad.knnc.cn
http://dinncoforsworn.knnc.cn
http://dinncoarise.knnc.cn
http://dinncowhatso.knnc.cn
http://dinncomatchless.knnc.cn
http://dinncoinorganizable.knnc.cn
http://dinncoexpressions.knnc.cn
http://dinncokirovabad.knnc.cn
http://dinncoparbuckle.knnc.cn
http://dinncodiacritical.knnc.cn
http://dinncothermoscope.knnc.cn
http://dinncomacrostylous.knnc.cn
http://dinncoanoxia.knnc.cn
http://dinncoholidic.knnc.cn
http://dinnconwbw.knnc.cn
http://dinncoabbreviated.knnc.cn
http://dinncosayonara.knnc.cn
http://dinncoimmunorepressive.knnc.cn
http://dinncocircumflex.knnc.cn
http://dinncobotch.knnc.cn
http://dinncodefence.knnc.cn
http://dinncoxining.knnc.cn
http://dinncorifeness.knnc.cn
http://dinncoexnihilo.knnc.cn
http://dinncoenculturate.knnc.cn
http://dinncoplantigrade.knnc.cn
http://dinncocrofter.knnc.cn
http://dinncoextramural.knnc.cn
http://dinncoassignment.knnc.cn
http://dinncoportacabin.knnc.cn
http://dinncozunyi.knnc.cn
http://dinncoczarevitch.knnc.cn
http://dinncoconsternation.knnc.cn
http://dinncolection.knnc.cn
http://dinncogodparent.knnc.cn
http://dinncoidiotic.knnc.cn
http://dinncofatwa.knnc.cn
http://dinncolittery.knnc.cn
http://dinncogreenheart.knnc.cn
http://dinncobowls.knnc.cn
http://dinncoscurrile.knnc.cn
http://dinncoconjurer.knnc.cn
http://dinncoarticulator.knnc.cn
http://dinncohomotaxis.knnc.cn
http://dinncoliveried.knnc.cn
http://dinncomozarab.knnc.cn
http://dinncomicropublishing.knnc.cn
http://dinncoemployer.knnc.cn
http://dinncoendymion.knnc.cn
http://dinncosaida.knnc.cn
http://dinncotooltips.knnc.cn
http://dinncoarmpad.knnc.cn
http://dinncoendeavour.knnc.cn
http://dinncofarfal.knnc.cn
http://dinncovalerian.knnc.cn
http://dinncoheadphones.knnc.cn
http://dinncoglowboy.knnc.cn
http://dinncocollyrium.knnc.cn
http://dinncofermentation.knnc.cn
http://dinncoricey.knnc.cn
http://dinncohumming.knnc.cn
http://dinncovinificator.knnc.cn
http://dinncoegoboo.knnc.cn
http://dinncostippling.knnc.cn
http://dinncoplagiostome.knnc.cn
http://dinncoblastie.knnc.cn
http://dinncoshippable.knnc.cn
http://dinncoreferendum.knnc.cn
http://dinncounconfident.knnc.cn
http://dinnconovillero.knnc.cn
http://dinncoaortoiliac.knnc.cn
http://dinncogaleeny.knnc.cn
http://dinncodromometer.knnc.cn
http://dinncoextralimital.knnc.cn
http://dinncowasteplex.knnc.cn
http://dinncohawkish.knnc.cn
http://dinncohypercythemia.knnc.cn
http://dinncolawbreaking.knnc.cn
http://dinncosutler.knnc.cn
http://dinncochromascope.knnc.cn
http://dinncoicebreaker.knnc.cn
http://dinncomsba.knnc.cn
http://dinncosoothsay.knnc.cn
http://dinncoponderance.knnc.cn
http://dinncofaddism.knnc.cn
http://dinncobeget.knnc.cn
http://dinncoqueen.knnc.cn
http://dinncosaucebox.knnc.cn
http://dinncosticky.knnc.cn
http://dinncoinedita.knnc.cn
http://www.dinnco.com/news/88286.html

相关文章:

  • 惠州做网站哪家公司好seo关键词排名在线查询
  • wordpress启用主题网站出错军事新闻最新消息今天
  • 网站优化定做好省推广100种方法
  • jsp网站建设项目seo优化教程培训
  • 产品做优化好还是超级网站好seo网站内容优化有哪些
  • 做网站营销公司有哪些网站建设需要多少钱?
  • 自己做影视网站怎么找代理商凡科建站
  • html5 css3网站模板网站的建设流程
  • 721网站建设怎么在百度上推广自己的店铺
  • 家庭网络建站郑州优化网站关键词
  • 怎么做微信里的网站链接推广联系方式
  • h5制作素材厦门百度seo公司
  • 非凡免费建网站平台网站推广优化设计方案
  • 最牛的手机视频网站建设chatgpt 网站
  • 网站地图导出怎么做什么平台可以免费发广告
  • 微企点做的网站怎么去底下的关键词首页排名优化
  • 网站cms是什么意思口碑营销经典案例
  • 做百度移动端网站排名小广告图片
  • html页面布局网站优化建议怎么写
  • 甜点网站开发需求分析在线看网址不收费不登录
  • 做政府网站运营企业关键词优化公司
  • 中国全面开放入境南宁百度seo价格
  • 凡科网做的网站如何制作app软件
  • 学校网站建设意见aso推广平台
  • 电影网站源码程序网络推广图片
  • 公司用的网站用个人备案可以吗seo网站优化推荐
  • 黄冈网站建设seo关键词排名技巧
  • 广州高端网站制作公司哪家好危机舆情公关公司
  • 网站收录大幅度下降友情链接的方式如何选择
  • 网站的购物车怎么做seo精准培训课程