SonarJs по-прежнему показывает предупреждение о междоменной проблеме postMessage

Это правило проверки от RSPEC-2819

Авторам не следует использовать ключевое слово подстановки ( *) в аргументе targetOrigin в сообщениях, которые содержат какую-либо конфиденциальную информацию, поскольку в противном случае невозможно гарантировать, что сообщение будет доставлено только получателю, для которого оно было предназначено.

Я предполагаю, что это требует * не может быть использован как targetOrigin, Но он по-прежнему показывает предупреждение, когда я использую предполагаемый домен как targetOrigin как ниже:

Пожалуйста, кто-нибудь может сказать мне, как пройти эту проверку,

Любая помощь будет оценена

2 ответа

Решение

Это правило обнаруживается только если метод postMessage вызывается для объекта с именем, содержащим window в этом. Исходный код: PostMessageCheck.java. Чтобы обойти это, просто назначьте contentWindow объект в другой, как это:

var content = this.elem.contentWindow;

content.postMessage('your message', window.location.origin);

Столкнулись с аналогичной проблемой в sonarQube. Исправление ниже сработало. ;-). просто избавьтесь от использования объекта окна напрямую.

Фактический код: window.parent.postMessage ("данные",parenturl);

Исправлено:var content=window;content.parent.postMessage("данные",parenturl);

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