建设网站需要备案万网买好域名后如何开通网站
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:43
当前位置: 首页 > news >正文
建设网站需要备案,万网买好域名后如何开通网站,老河口市建设局网站,北京编程培训机构哪个好文章目录 一、原因分析二、解决方案一览三、解决方案代码案例3.1 使用 HTTPS3.2 验证 URL3.3 禁用 JavaScript3.4 使用安全的 WebView 设置3.5 监控网络请求3.6 使用安全的 DNS 四、案例深入分析4.1 问题4.2 分析 五、结论 在 Android 应用开发中#xff0c;WebView 是一个常用… 文章目录 一、原因分析二、解决方案一览三、解决方案代码案例3.1 使用 HTTPS3.2 验证 URL3.3 禁用 JavaScript3.4 使用安全的 WebView 设置3.5 监控网络请求3.6 使用安全的 DNS 四、案例深入分析4.1 问题4.2 分析 五、结论 在 Android 应用开发中WebView 是一个常用的组件用于在应用内显示网页内容。然而有时用户可能会发现网页被劫持到另一个不安全的网页。这种情况不仅影响用户体验还可能带来安全隐患。本文将探讨导致网页被劫持的可能原因并提供相应的解决方案。
一、原因分析 JavaScript 重定向 某个网页中包含以下 JavaScript 代码 window.location.href http://malicious-site.com;这段代码会在页面加载时将用户重定向到恶意网站。 恶意网页 用户点击了一个链接访问了一个看似正常的网站但该网站实际上是一个钓鱼网站包含重定向代码试图引导用户输入敏感信息。 WebView 设置不当 开发者在 WebView 中未设置 WebViewClient导致 WebView 默认行为是打开所有链接而不是在应用内处理。这可能导致用户被重定向到外部浏览器增加了被恶意网站劫持的风险。 拦截 URL 加载 在 shouldOverrideUrlLoading 方法中开发者没有正确处理 URL例如 Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {// 没有验证 URL直接加载view.loadUrl(url);return true;
}这可能导致用户被重定向到不安全的网站。 广告或跟踪脚本 某些网页可能嵌入了广告或跟踪脚本这些脚本会在用户访问时自动重定向到广告商的网站甚至可能是恶意网站。 中间人攻击 在公共 Wi-Fi 网络中攻击者可能通过中间人攻击拦截用户的网络请求并将其重定向到恶意网站伪装成合法网站。 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); // 禁用 JavaScript3.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 分析 因为用户在任何网络环境都能复现怀疑是用户android端的系统DNS解析被劫持了。 验证方法android端打开华佗诊断的DNS检测页面发现解析结果为空。在其他浏览器打开链接A也不会调整到链接B。说明系统的DNS解析没有被劫持。 检测页面链接https://itango.tencent.com/app/data/huatuo 通过抓包工具分析发现没有A域名的请求包。虽然界面上打开的是链接A但是实际上Webview直接发起了B的请求。 通过这一点怀疑是Webview缓存了之前在某个网络环境下的DNS解析结果默认跳转到了链接B。 其中抓包工具使用的是Reqable 下载链接是https://reqable.com/zh-CN/android/ 删除应用的【缓存】不需要清除数据用户恢复正常。验证了确实是Webview在应用沙箱中缓存了解析结果。
五、结论
在 Android WebView 中网页被劫持的情况可能由多种因素引起包括 JavaScript 重定向、恶意网页、设置不当等。通过采取适当的安全措施开发者可以有效降低这些风险保护用户的浏览体验和数据安全。确保在开发过程中关注这些潜在的安全隐患将有助于提升应用的整体安全性和用户信任度。
- 上一篇: 建设网站需申请什么手续四川网站建设 四川冠辰科技
- 下一篇: 建设网站需要的费用桔子建站
相关文章
-
建设网站需申请什么手续四川网站建设 四川冠辰科技
建设网站需申请什么手续四川网站建设 四川冠辰科技
- 技术栈
- 2026年03月21日
-
建设网站虚拟主机做网站需要会什么 知乎
建设网站虚拟主机做网站需要会什么 知乎
- 技术栈
- 2026年03月21日
-
建设网站小常识php网站开发范例
建设网站小常识php网站开发范例
- 技术栈
- 2026年03月21日
-
建设网站需要的费用桔子建站
建设网站需要的费用桔子建站
- 技术栈
- 2026年03月21日
-
建设网站需要多少钱济南兴田德润厉害吗工信部网站备案要先做网站吗
建设网站需要多少钱济南兴田德润厉害吗工信部网站备案要先做网站吗
- 技术栈
- 2026年03月21日
-
建设网站需要客户提供什么资料低价网站建设咨询
建设网站需要客户提供什么资料低价网站建设咨询
- 技术栈
- 2026年03月21日
