เมื่อ Avira ร่มแดงทำพิษ…

สิ่งที่ผมไม่คาดคิดว่าจะเกิดขึ้นจาก สแกนไวรัส Avira เกิดขึ้นแล้วกับเว็บของผมเอง เมื่ออัพเดทตัวล่าสุดของ Avira ของวันที่ 19/06/2552 เกิดมีปฏิกิริยากับ Javascript ที่มีการกำหนดตัวแปรเยอะๆซะแล้ว ทำให้มีสมาชิกในเว็บโทรมาแจ้งว่าเว็บมีไวรัส (อ่าวกรรมละสิ) แต่เมื่อเข้าไปเช็คผมก็ไม่เจอ ที่บ้านใช้ NOD กับ AVG อัพเดทตลอด ไม่เจอ แต่ก็ยังรู้สึกตะหงิดๆก็เลยลองลง Avira แล้วอัพเดทล่าสุด แจ๊คพ๊อตครับ

ซึ่งสิ่งที่เกิดขึ้นนั้นทำให้เกิดการ Alert ขึ้นมาดังนี้

ซึ่งจากการดูการที่มันแจ้งว่าเป็นไวรัสมันคงคิดว่าโค๊ดมีตัวแปรคล้ายๆกับสคริปไวรัสหรือเปล่า โดยโค๊ดที่ใช้งานมานั้นเขียนแค่
var AMPHER=new Array();
var STATE=’10||กรุงเทพมหานคร||11||สมุทรปราการ||12||นนทบุรี||13||ปทุมธานี||14||พระนครศรีอยุธยา||15||อ่างทอง||16||ลพบุรี||17||สิงห์บุรี||18||ชัยนาท||19||สระบุรี||20||ชลบุรี||21||ระยอง||22||จันทบุรี||23||ตราด||24||ฉะเชิงเทรา||25||ปราจีนบุรี||26||นครนายก||27||สระแก้ว||30||นครราชสีมา||31||บุรีรัมย์||32||สุรินทร์||33||ศรีสะเกษ||34||อุบลราชธานี||35||ยโสธร||36||ชัยภูมิ||37||อำนาจเจริญ||39||หนองบัวลำภู||40||ขอนแก่น||41||อุดรธานี||42||เลย||43||หนองคาย||44||มหาสารคาม||45||ร้อยเอ็ด||46||กาฬสินธุ์||47||สกลนคร||48||นครพนม||49||มุกดาหาร||50||เชียงใหม่||51||ลำพูน||52||ลำปาง||53||อุตรดิตถ์||54||แพร่||55||น่าน||56||พะเยา||57||เชียงราย||58||แม่ฮ่องสอน||60||นครสวรรค์||61||อุทัยธานี||62||กำแพงเพชร||63||ตาก||64||สุโขทัย||65||พิษณุโลก||66||พิจิตร||67||เพชรบูรณ์||70||ราชบุรี||71||กาญจนบุรี||72||สุพรรณบุรี||73||นครปฐม||74||สมุทรสาคร||75||สมุทรสงคราม||76||เพชรบุรี||77||ประจวบคีรีขันธ์||80||นครศรีธรรมราช||81||กระบี่||82||พังงา||83||ภูเก็ต||84||สุราษฎร์ธานี||85||ระนอง||86||ชุมพร||90||สงขลา||91||สตูล||92||ตรัง||93||พัทลุง||94||ปัตตานี||95||ยะลา||96||นราธิวาส’;
…..
…..
…..
จากนั้นก็เอาค่าพวกนั้นมาแยกค่าโดยผ่านการ Split เท่านั้นเอง
function setState(frm,sM) {
var c=frm.elements[’province’];
var aM=eval(”STATE.split(’||’)”);
ซึ่งเป็นโค๊ดในลักษณะของการทำ Multi Dropdown เท่านั้นเอง

เมื่อเลือกจังหวัด ก็จะสามารถเลือกอำเภอได้ก็เท่านั้น ก็ไม่รู้ว่าเจ้า Ariva มันไปคิดว่าการกำหนดตัวแปร แล้วเอามาแยก หรือเข้าฟังก์ชั่น eval มันเป็นไวรัสหรือเปล่า มันก็เลยฟ้องขึ้นมาซะงั้น
สแกนไวรัสยี่ห้ออื่นๆไม่เป็นเลยไม่ว่าจะ NOD , McAfee , AVG มีก็แต่ร่มแดงเท่านั้นที่ดันฟ้องกับคำสั่งพวกนี้ ให้ตายสิโรบิน…
เมื่อฟ้อง ก็ได้ เปลี่ยนก็ได้วุ้ย…แต่จะเปลี่ยนยังไงดีหล่ะในเมื่อ Javascript แบบนี้ใช้ไม่ได้ ก็ต้องอาศัยการทำงานในรูปแบบของ Ajax ซะแล้ว ก็มานั่งเขียนใหม่ด้วยการใช้งานในรูปแบบของ Ajax โดยเขียนง่ายๆ
<script type=”text/javascript”>
var http = false;
if(navigator.appName == “Microsoft Internet Explorer”) {
http = new ActiveXObject(”Microsoft.XMLHTTP”);
} else {
http = new XMLHttpRequest();
}
function SetAmpher(province) {
http.abort();
http.open(”GET”, “Ampher.php?province=” + province, true);
http.onreadystatechange=function() {
if(http.readyState == 4) {
document.getElementById(’ampher_select’).innerHTML = http.responseText;
}
}
http.send(null);
}
</script>
จากนั้นในฟอร์มของเราก็จะสั่งให้มันทำงานตอนที่เราเลือกจังหวัด โค๊ดก็เป็นลักษณะประมาณนี้
<form name=”vip” method=”GET” action=”">
<select name=”province“ id=”province” style=”width:200px;” onChange=”SetAmpher(province.value)”>
<option value=”">เลือกจังหวัด</option>
<option value=”1″>กรุงเทพมหานคร</option>
<option value=”2″>เชียงใหม่</option>
</select>
<div id=”ampher_select”>
<select name=”ampher” size=”1″ id=”ampher” style=”width:200px;” ></select>
</div>
<INPUT TYPE=”submit”>
</form>
ก็ไม่มีอะไรมากก็แค่เวลาเราเลือก Select จังหวัด สคริปก็จะสั่งให้ไปเรียกสคริปที่ชื่อ Ampher.php แล้วส่งค่าตัวแปรที่ชื่อ province ออกไปด้วย จากนั้นเมื่อไฟล์ Ampher.php ทำงานเสร็จก็จะแสดงผล Select ที่เป็นส่วนของอำเภอในจังหวัดนั้นออกมา
ง่ายๆแต่ใช้การได้ดีครับ เดี๋ยวคงจะไล่เปลี่ยน Javascript ลักษณะนี้ทิ้งๆ เพราะกลัววันดีคืนดีเจ้า Avira มันจะเอ๋อฟ้องออกมาแบบนี้อีก หันไปใช้งาน Ajax ให้หมดเลยดีกว่า




















You must be logged in to post a comment.