質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

1864閲覧

JavaScriptでhtml内のscriptをブロックしたい

A111

総合スコア13

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/11/01 04:35

#実現したいこと
JavaScriptでHTML内のscriptをブロックしたく,

js

1var scriptblock = document.getElementsByTagName("script")[0]; 2scriptblock.parentNode.removeChild(script block);

を実行したのですが実行前と挙動の変化がなく効果がないと考えました.
どのようにすればscriptを完全にブロックできますでしょうか.
解決策等ご存知の方,お答えいただけますと幸いです.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

JavaScriptで

ブラウザ側のJavaScriptだけでは完全ブロックはできません。

どのようにすればscriptを完全にブロックできますでしょうか.

解決策等ご存知の方,お答えいただけますと幸いです.

サーバー側の応答ヘッダを用いてブラウザの持つ「セキュリティ機能」を活用してください。

  1. CORS オリジン指定で制限をかけることができる
  2. サブリソース完全性 を使い、サーバー側でSRIを生成し、integrity属性を持ったscript要素をブラウザに照合させる
  3. コンテンツセキュリティポリシー ホワイトリスト / ブラックリストを詳細に設定できる

投稿2020/11/01 07:50

AkitoshiManabe

総合スコア5434

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A111

2020/11/01 07:52

根本的な解決策をご提示いただきありがとうございます そちらの方法で試させていただきます ご回答いただきありがとうございました!
AkitoshiManabe

2020/11/01 07:57

yambejp さんの回答されているように「メモリに残る」特徴を活かし、window.onload イベントでscript 要素を削除すると、リバースエンジニアリングを困難にすることも可能です(ただし、SEOの絡むサーフェスウェブでは使えそうにありませんが)。
A111

2020/11/01 08:02

window.onloadで発火させる方法も検討させていただきます
guest

0

removeしてもメモリ上の処理は残っているようです

javascript

1<script> 2window.addEventListener('DOMContentLoaded',()=>{ 3 var s= document.querySelectorAll('script')[2]; 4 var p=s.parentNode; 5 p.removeChild(s); 6 test(); 7}); 8 9</script> 10<body> 11<script> 12var test=()=>{ 13 console.log("A"); 14} 15</script> 16<script> 17test=()=>{ 18 console.log("B"); 19} 20</script> 21</body>

投稿2020/11/01 07:04

yambejp

総合スコア114987

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A111

2020/11/01 07:51 編集

> 実行前と挙動の変化がなく効果がないと考えました は合っていたということになりますね. ご回答いただきありがとうございました!
guest

0

そのコードだと、一番最初のスクリプトタグしか削除されないと思うので、
このように書き換えてみてください。

javascript

1var scriptblocks = document.getElementsByTagName("script"); 2for (let i = 0;i > scriptblocks.length;i++) { 3 scriptblocks[i].remove(); 4}

また、このコードが、headタグの一番最初にあるか確認してください。

投稿2020/11/01 06:09

Itta

総合スコア105

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問