清理(清理)后返回无效链接

问题描述 投票:0回答:1

我正在从各种意图加载 URL(我有深层链接或 FCM 通知发送的链接),然后在 WebView 中打开它们。

我实现了 Jsoup 来保护我的应用程序免受 XSS 攻击。

实施:

@Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        String intentUrl = loadIntentUrl(intent);
        if (intentUrl != null) {
            String safeUrl = Jsoup.clean(intentUrl, Safelist.basic());
            Log.d("onNewIntent", "safeUrl: " + safeUrl);
            webView.loadUrl(safeUrl);
        }
    }

但我收到了有效的深层链接 URL(示例:https://my.appName.com/?activate=users&userId=523332

但是

Jsoup.clean(intentUrl, Safelist.basic())
正在将其转变为

https://my.appName.com/?activate=users&userId=523332

将其发送到 webView 会给客户带来一些问题。有没有办法消除这种转换,以便 Jsoup 正确处理它,同时防止 XSS 攻击?

我可以使用

.replaceAll("&", "&")
但不确定这是否是一个很好的动态解决方案(如果 Jsoup 可能会在不同链接中导致某些其他参数错误)

android android-webview jsoup android-deep-link
1个回答
0
投票

jsoup.clean
方法接受并返回 HTML。根据文档:

公共静态字符串clean(字符串bodyHtml,安全列表safelist

通过解析输入 HTML,从不受信任的输入 HTML 中获取安全的 HTML 通过允许的标签和属性的安全列表对其进行过滤。

clean 方法不会获取和清理 URL 的内容。如果你想这样做(?),你需要做类似的事情:

String url = "https://my.appName.com/?activate=users&userId=523332";
Document doc = Jsoup.connect(url).get();
String sourceHtml = doc.html();
String cleanHtml = Jsoup.clean(sourceHtml, url, Safelist.basic());
print(cleanHtml); // Implement to send the cleaned HTML to your webview
© www.soinside.com 2019 - 2024. All rights reserved.