Устранение уязвимости внедрения интерфейса JavaScript

Я получил предупреждение от консоли Google Play, которое отсылает меня к эта страница, потому что я использовал интерфейс JavaScript в своем приложении и предлагаю два варианта решения проблемы.

Опция 1 сообщает:

Ensure that there are no objects added to the JavaScript interface of any WebView that loads untrusted web content. You can do this in two ways:

Ensure that no objects are ever added to the JavaScript interface via calls to addJavascriptInterface.

Remove objects from the JavaScript interface in shouldInterceptRequest via removeJavascriptInterface before untrusted content is loaded by the WebView.

но я не могу понять, о чем конкретно говорит Google:

Remove objects from the JavaScript interface in shouldInterceptRequest via removeJavascriptInterface before untrusted content is loaded by the WebView

может кто-нибудь рассказать мне больше объяснений?

Я считаю, что это говорит о том, что вы должны удалить все, что вы добавили, перед посещением сайта http (в отличие от сайта https). А еще лучше - не использовать никаких инъекций.

Gabe Sechan 08.12.2018 07:40

если Google не разрешил нам использовать инъекцию, то почему этот метод существует ?!

Vahid 08.12.2018 10:03

Обратите внимание, что там написано «для ненадежного веб-содержимого». Если это используется для доверенного содержимого, то этот метод все равно полезен. Вот почему существует метод.

Nick Fortescue 10.12.2018 10:01

Да, там написано «для ненадежного веб-контента», но как Google узнает, что я использую его для веб-сайта ssl или ненадежного веб-сайта?

Vahid 10.12.2018 14:42
7
4
2 695
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я столкнулся с той же проблемой и тоже не смог понять этого. Что сработало для меня, что описано в Как устранить «Устранение уязвимости, связанной с внедрением в интерфейс JavaScript»?, так это использование WebView.evaluateJavascript. Увы, это не полная замена для всех вариантов использования JavascriptInterface, но, возможно, этого достаточно для ваших целей.

Ответ принят как подходящий

Я просто выпускаю обновление, не делая ничего особенного, и предупреждение исчезло, НО не уверен, что оно вернется снова или нет

Надеюсь, что в своем ответе я объяснил вашу озабоченность, это может помочь.

Pravesh Agrawal 29.01.2019 18:01

Вы можете решить эту проблему следующими способами:

  1. Если ваш сайт поддерживает HTTPS, используйте префикс «https: //» в методе loadUrl.
  2. Вы можете установить для android: usesCleartextTraffic значение false в манифесте или установить конфигурацию сетевой безопасности, которая запрещает трафик HTTP. Это также означает, что ваш сайт должен работать по протоколу HTTPS.

Теперь, переходя к вашему вопросу о «Удалите объекты из интерфейса JavaScript в shouldInterceptRequest через removeJavascriptInterface до того, как WebView загрузит ненадежный контент.»: это означает, что ваше приложение должно удалить (или отключить) JavaScriptInterface всякий раз, когда в WebView загружается какой-либо URL-адрес, отличный от HTTPS.

После выполнения любого из этих действий вам необходимо обновить APK в Play Console.

Вывод состоит в том, что если вы хотите использовать JavaScriptInterface, лучше используйте HTTPS на своем веб-сайте. Если вы используете HTTP, JavaScriptInterface не будет разрешен в Google Play.

Другие вопросы по теме