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