KasperskyがサイトでHEUR:Trojan.Script.Generic Trojanを検出するのはなぜですか? (および可能な解決策)

良い一日。 セキュリティに関連した別の記事、またはあなたのサイトへのアクセス、親愛なるウェブマスター...があります。



脅威「HEUR:Trojan.Script.Generic」



おそらくあなたはウェブサイトを持っていて、 jQueryのようなライブラリを使用していなかったのに、JavaScriptを「サイトにスパゲッティコードをラップする」ことに決めただけです(スポーツの興味のために、私のようにしましょう)。 そしてここでは、特に使用していない場合は特に、お気に入りのKasperskyアンチウイルスにそのような「平均」を期待することさえありませんが、友人が使用しています。 彼はあなたのサイトで「オブジェクトがHEURに感染しています:Trojan.Script.Generic」というメッセージを見るでしょう:



一方、他のウイルス対策ソフトはサイレントです。





ここで何が問題なのかを伝えるために、私はJavaScriptでコードを提供することを余儀なくされているので、私はそれについて話し続けます。

そこで、サードパーティのライブラリを使用せずにオートコンプリートを整理するためにデータリストを使用することにしました(HTML5には奇跡が見られましたが、ロシア語の文字に関する問題は真実です。

フォームコードを書きました:



<form method="get" action="" > <input type="search" name="q" value="<?= $q; ?>" list="json-datalist" id="i_search" autocomplete="off" /> <input type="submit" value="  " /> </form> <datalist id="json-datalist"></datalist>
      
      







そして、彼は、私には思われたように、無害なコードを書きました。

 //   <datalist>  <input> var dataList = document.getElementById('json-datalist'); var input = document.getElementById('i_search'); //   XMLHttpRequest. var request = new XMLHttpRequest(); //   . request.onreadystatechange = function(response) { if (request.readyState === 4) { if (request.status === 200) { var jsonOptions = JSON.parse(request.responseText); // Parse the JSON //   JSON jsonOptions.forEach(function(item) { var option = document.createElement('option'); //       json-. option.value = decodeURIComponent(unescape(item)); //    <option>  <datalist>. dataList.appendChild(option); }); input.placeholder = "Please type"; } else { //    input.placeholder = "Couldn't load datalist"; } } }; //   input.placeholder = "Loading options..."; //     request.open('GET', URL_BASE+'/data.json', true); request.send();
      
      







トロイの木馬を入手してください!

-トロイの木馬はどこにありますか? 見えない? ああ、私も見えませんが、カスペルスキーは見えます!

そして彼はここで彼を見ています:

  request.open('GET', URL_BASE+'/data.json', true);
      
      





次に、この行を削除すると、すべてが正常に実行されます。スクリプトは機能せず、ウイルス対策は落ち着いています。



デブリーフィング



そのため、要求state- onreadystatechangeのインターセプターをさらに深く掘り下げる必要があります。

私たちの薬は別の関数になります 。updatePageと呼びましょう。ここでは、返されたJSON配列の列挙を記述し、ここで状態インターセプターに割り当てます。

  request.onreadystatechange = updatePage;
      
      







その結果、Kaspersky Anti-Virusが煩わしくないようにコードを書き直しました。

 var dataList = document.getElementById('json-datalist'); var input = document.getElementById('i_search'); var url = URL_BASE + '/data.json'; var request = null; if(window.XMLHttpRequest) request = new XMLHttpRequest(); else if (window.ActiveXObject) request = new ActiveXObject(Microsoft.XMLHTTP); function updatePage() { if (request.readyState == 4) if (request.status == 200) { var jsonOptions = JSON.parse(request.responseText); jsonOptions.forEach(function(item) { var option = document.createElement('option'); option.value = item; dataList.appendChild(option); }); input.placeholder = "Please type"; delete request; } else { input.placeholder = "Couldn't load datalist"; } } request = getXmlHttp(); request.open("GET", url, true); request.onreadystatechange = updatePage; request.send(null);
      
      





PSこれは、あなたのサイトに本当に「左翼スクリプト」が存在する場合もあるので、これが最愛のアンチウイルスからのそのようなメッセージの形で警告が表示される唯一の理由であるとは言っていません。



All Articles