เว็บไซต์ล่มเพราะ upgrade jetpack

fatal error
fatal error

2 ต.ค.59 เว็บไซต์ lampang.net หายไปเกือบทั้งวัน เพราะช่วงเช้าได้ upgrade wordpress และ plugin jetpack กับหลายไซต์ แต่พบปัญหาที่ lampang.net โดย error ครั้งแรกแจ้งว่า service unavailable แล้วก็เงียบไปเลย ก็เป็นที่ server สิ่งที่ทำได้คือรอให้ server มีการ recover folder ต่าง ๆ กลับมาให้ครบ แต่หลังจากกลับมาทำงานปกติ พบว่าห้อง jetpack กลับไม่เหมือนเดิม

jetpack stat monthly
jetpack stat monthly

วิธีแก้ไข
1. ลบแฟ้ม jetpack.php พบว่าระบบมาทำงานปกติ แต่ jetpack หายไป
2. ลงใหม่ทับไม่ได้ ระบบไม่ยอม ฟ้องว่ามีของเก่าอยู่
3. ไปลบห้อง jetpack ในเครื่องออก แล้วสั่งลงใหม่
4. หลังลงใหม่ ต้อง activate อีกหลายขั้นตอน
– หน้า Dashboard ต้องกดปุ่ม Connect Jetpack
– แล้ว Log in เข้าระบบด้วย wordpress account
– แล้ว approve
– แล้ว Select Free
– แล้ว Activate Recommended Features
– เรียบร้อย

Plugin : Jetpack ของ wordpress คือ บริการเพิ่มการเข้าใช้งาน
ดูสถิติ เพิ่มความเร็วให้เว็บไซต์ และป้องกันการถูกจู่โจมจากผู้ไม่หวังดี
(Jetpack will be increase your traffic, view your stats, speed up your site, and protect yourself from hackers with Jetpack)
https://th.wordpress.org/plugins/jetpack/

Topics for upgrade member
– Traffic Growth & Insights
– Security
– Image Performance
– Centralized Management
– A few more things that our users love
– Dedicated Support
– Contributing to Jetpack

เพื่อนปรึกษาว่า รับแฟ้ม excel มา แล้วเปิดไม่ได้

01_got_mail1. วันหนึ่ง เพื่อนชื่อนางลำ รับอีเมลจาก เพื่อนชื่อนายบาง
ในอีเมลมีแฟ้มอยู่ 6 แฟ้ม คือ

allsheet.xls
filelist.xml
sheet001.htm
sheet002.htm
stylesheet.css
tabstrip.htm

แล้วนางลำก็ forward mail ถามผมว่าเปิดอย่างไร
พยายามเปิดแล้วก็ไม่ได้
เพราะแฟ้มที่ได้รับมาเป็น excel ก็ใช้ excel รุ่นใหม่แล้ว
นามสกุลก็ชัดเจนว่าเป็น .xls จะเป็นอื่นไปไม่ได้

02_format_missing

2. เมื่อเพื่อนชื่อลำสอบถามจากเพื่อนชื่อนายบาง ว่าเปิดไม่ได้สงสัยแฟ้มเสีย
เพื่อนชื่อนายบางก็ส่งแฟ้มกลับมาให้อีกรอบ และเปิดไม่ได้เหมือนเดิม
กรณีแฟ้มเสียจึงไม่น่าจะเป็นไปได้ เพราะส่งอีเมลมาให้ถึง 2 รอบ

03_miss_file

04_file_structure

3. ผมลองเปิดดู ก็พบกับข้อความว่า
รูปแบบไฟล์และนามสกุลของ ‘allsheet.xls’ ไม่ตรงกัน
ไฟล์อาจเสียหายหรือไม่ปลอดภัย
อย่าเปิดไฟล์ดังกล่าวถ้าคุณไม่เชื่อถือในแหล่งที่มา
คุณต้องการเปิดไฟล์นี้หรือไม่

08_savexls

4. ก็ต้องเลือก “ใช่” เข้าสู่ขั้นต่อไป
แต่กลับพบข้อความว่า มีปัญหาเกิดขึ้นระหว่างการโหลดในส่วนต่อไปนี้
แสดงว่าเปิดแฟ้ม .xls จะไปเรียกแฟ้มอื่นมาทำงานด้วย
อยู่ใน allsheet.files\sheet001.htm
และ allsheet.files\sheet002.htm

05_change_extension

5. ทำการสร้าง folder ชื่อ allsheet.files
ในห้องเดียวกับที่เก็บแฟ้ม allsheet.xls
แล้วย้าย 5 แฟ้มเข้าไป ยกเว้นแฟ้ม allsheet.xls เข้าห้องที่สร้างขึ้น

06_open_by_chrome

07_open_by_excel

6. เปิด allsheet.xls ก็พบว่ามีข้อมูลที่ต้องการ
09_sheet1

10_sheet2

[Download]
สำหรับผู้ที่ต้องการทดสอบ
ผมมีแฟ้มภาพ และแฟ้ม allsheet.xls ให้นำไปลองจัดโครงสร้างเอง
สามารถดาวน์โหลดได้ที่
https://www.facebook.com/groups/thaiebook/664429603707861/

[Looking back]
แต่เมื่อคิดย้อนกลับ ว่า [เพื่อนชื่อนางบาง] สร้างแฟ้ม allsheet.xls ขึ้นมาได้อย่างไร
ผมจึงได้ทดสอบสร้างข้อมูลขึ้นมา 2 sheets
แล้ว save as แล้วเปลี่ยนประเภทเป็น Web Page (*.htm;*.html)
แต่บังคับชื่อแฟ้มและ extension ด้วยการพิมพ์ว่า “allsheet.xls”
จากนั้นเพื่อนชื่อนายบาง ก็ส่งอีเมลเป็นแฟ้มทั้งหมดให้นางลำ
โดยส่งแฟ้ม allsheet.xls พร้อมกับแฟ้มทั้งหมดในห้อง allsheet.files

จึงเป็นที่มาที่ทำให้ได้จัดโครงสร้างของแฟ้มแบบย้อนกลับ
เพื่อจะได้เปิดแฟ้ม allsheet.xls ตามประสงค์ของเพื่อนชื่อนางลำ
ซึ่งผลที่ได้คือเลือกเปิดแฟ้มนี้ได้ทั้งโปรแกรม excel และ chrome

ข่าวถูกโอนเงิน 9 แสน เป็นของผู้ขายเครื่องประดับยนต์ทางเฟซบุ๊ค

ข่าวถูกโอนเงิน 9 แสน เป็นของผู้ขายเครื่องประดับยนต์ทางเฟซบุ๊ค
ข่าวถูกโอนเงิน 9 แสน เป็นของผู้ขายเครื่องประดับยนต์ทางเฟซบุ๊ค

ขั้นตอนที่ต้องระวังในการทำธุรกรรมบนไซเบอร์
1. ตกลงขายสินค้าให้ลูกค้ารายหนึ่งเรียบร้อยแล้ว
2. ให้เลขบัญชี เพื่อลูกค้าจะได้โอนจ่ายค่าสินค้า
3. ลูกค้าอ้างว่ากลัวโดนหลอก ขอดูบัตรประชาชนของผู้ขาย
จึงส่งให้ โดยปิดเลข 13 หลักไว้แล้ว เพื่อความปลอดภัย
4. ลูกค้าอ้างว่าไม่สะดวก อยากให้ผู้ขายใช้ Bank-Cyber ของธนาคารแห่งหนึ่ง
ก็ไปสมัคร เพราะต่อไปน่าจะสะดวกขึ้น ในการทำธุรกรรมออนไลน์
5. แล้วลูกค้าก็เงียบหายไป
6. ต่อมาโทรศัพท์ที่ใช้กับค่ายหนึ่ง โดนตัดสัญญาณ
ไปถามเค้าบอกว่ามีคนมาขอซิมใหม่แต่เบอร์เดิมที่ศูนย์ในห้างที่เมกะบางนา
7. ศูนย์บอกว่า คนร้ายอ้างว่าทำเป๋าเงินและโทรศัพท์หาย
พร้อมแสดงสำเนาบัตรประชาชน ที่ถูกดัดแปลงเอาหน้าผู้ร้ายใส่เข้าไป
8. ไปตรวจเงินในบัญชี พบว่าเงินหายไปเยอะ
9. โทรถาม call center ของธนาคารแห่งหนึ่ง
ก็ได้ทราบว่ามีคนโทรของเปลี่ยนรหัส Bank-Cyber
10. ตรวจสอบพบว่ามีการกดเงินไป 20 ครั้งจากหลายห้าง
11. ทวงถามกับธนาคาร และศูนย์บริการของค่ายมือถือ
ก็ไม่คืบหน้าจึงไปแจ้งความ
12. พบเลขบัญชีปลายทางที่เงินถูกโอนไป ก็ต้องไปติดตามว่าบัญชีจริงหรือไม่
http://www.khaosod.co.th/view_newsonline.php?newsid=1470741983

https://www.youtube.com/watch?v=vBy3PYQTeTk

ในหนังเรื่อง CSI Cyber สะท้อนอาชญากรรมออนไลน์ได้อย่างชัดเจน

วันนี้เมื่อปีที่แล้ว (Today in the past)

on this day in facebook.com
on this day in facebook.com

มีเพื่อนถามว่าในความทรงจำ (Memory) ของ facebook.com
มักขึ้นรูปมาแบบ see first คอยสะกิดใจสำหรับคนมีอดีต (ที่ดี ๆ นะ)
วันนี้เมื่อปีที่ หรือปีก่อน ๆ เกิดอะไรขึ้น
เพื่อนบางคนเห็นแล้วชอบ แต่คลิ๊กไม่ทัน
เผลอไปคลิ๊กเรื่องอื่น กลับมาอีกทีก็หายแล้ว
สรุปว่า ถ้าเข้าไปดูอีกครั้งให้หาคำว่า “On This Day” ในกลุ่ม APPS
ก็จะพบภาพเก่า ๆ สำหรับคนที่มีอดีตในวันนี้เมื่อปีที่แล้ว
ย้อนหลับไปได้หลาย ๆ ปีเลยครับ
หรือกดลิงค์นี้เป็นอันเรียบร้อย
https://www.facebook.com/onthisday/
เรียกว่า “back to the past” ก็ว่าได้

happy birth day to my boss
happy birth day to my boss

แจกลิงค์ดาวน์โหลดหนังสือ Information systems and Management รวดเดียว 13 เล่ม

information system and management
information system and management

หนังสือเกี่ยวกับ ระบบสารสนเทศและการจัดการ
(Information systems and Management)
ดาวน์โหลดมาเป็น .zip มี 13 เล่ม แตกแล้วใช้พื้นที่ 79.7 MB ก่อนแตกใช้พื้นที่ 76.4 MB
เหมาะกับนักศึกษาสาย IT หรือ IS ที่จะดาวน์โหลดเก็บไว้ก่อน
อ่านหรือไม่ได้อ่านว่ากันอีกเรื่องหนึ่ง เอามาเก็บเข้าห้องสมุดส่วนตัวไว้ต้องดีแน่นอน
http://bookboon.com/en/information-systems-and-management-ebooks-zip

มารู้จักผู้ให้บริการ free e-book กันหน่อย
Free e-Book : Bookboon.com ตั้งขึ้นที่เดนมาร์คในปี 1988 หรือ 2531 ในชื่อ Ventus โดยมุ่งพิมพ์สื่อด้านการศึกษาสำหรับนักเรียนนักศึกษา และผู้เชี่ยวชาญทางธุรกิจ บริษัทมีเป้าหมายที่วางมาตรฐานใหม่ในโลกของสิ่งพิมพ์ยุคใหม่ตอบสนองความต้อง การของผู้อ่าน ในปี 2548 บริษัทปรับกลยุทธ์ด้วยการเปลี่ยนเป็นสำนักพิมพ์หนังสือออนไลน์แห่งแรกของโลก ที่จะจัดทำคู่มือฟรีสำหรับนักเรียน และเติบโตอย่างก้าวกระโดดจนปัจจุบันเป็นสำนักพิมพ์หนังสือออนไลน์หรืออีบุ๊ก ที่ใหญ่ที่สุดในโลก มีสำนักงานใหญ่อยู่ที่ประเทศอังกฤษ และโคเพ็นเฮเก็น ประเทศเดนมาร์ค นอกจากนี้ยังมีสำนักงานที่สต๊อกโฮม ประเทศสวีเดน อัมสเตอร์ดัม ประเทศเนเธอร์แลนด์ และมิวนิค ประเทศเยอรมัน เป็นสำนักพิมพ์หนังสือออนไลน์ระดับโลก มีมากกว่า 1000 หนังสือออนไลน์สำหรับนักเรียนนักศึกษา และ 600 หนังสือออนไลน์สำหรับผู้เชี่ยวชาญทางธุรกิจใน 9 ภาษา
http://www.thaiall.com/e-book

ก่อนหน้านี้
ดาวน์โหลดหนังสือกลุ่ม Microsoft Office มี 65 เล่ม
http://www.thaiall.com/blog/burin/7637/

ผมก็สาวกวินโดว์ที่สนใจ Linux shell ของ Ubuntu บน windows 10

win10 : update 1511
win10 : update 1511

[ที่มา]
ช่วงปลายเดือนมิถุนายน 2559 มีโอกาสรู้จักกับ WSL
WSL = Windiws Subsystem for Linux
ซึ่งออกแบบให้เป็นเผ่าพันธุ์เดียวกับ Windows
ไม่ใช่ Linux ที่ทำงานบน VM หรือพัฒนาให้วางบน Windows แบบ Cygwin
แต่เป็น shell ที่พัฒนาใน windows ซึ่งทำงานได้เร็วกว่าเผ่าอื่นแน่นอน
และ Windows ไม่ได้ออกแบบให้ใช้ Linux shell ได้เต็มที่เหมือนตัวเต็ม
เพียงแต่ใช้คำสั่งต่าง ๆ แบบ Linux ได้บน Windows เท่านั้น
โดย Linux ตัวนี้คือ Bash ที่พัฒนาจาก Ubuntu
ไม่สนับสนุน GUI Desktops หรือ Application
https://msdn.microsoft.com/en-us/commandline/wsl/faq

win10 : update and security
win10 : update and security

[การใช้ WSL]
ถ้าจะใช้ WSL ต้องติดตั้ง Windows 10 Anniversary
(version 1608) แต่ยังไม่เปิดทั่วไป
ปัจจุบันเปิดให้สมัครเข้าโครงการ Windows Insider เพื่อเข้าร่วมทดลองใช้
ก็จะได้ใช้รุ่น Insider Preview Build 14316
แต่เครื่องที่ผมใช้อยู่ขณะนี้ลง Windows 10 November Update
(version 1511 build 10586 – major) มี license
ในอนาคต ถ้าไปใช้ Anniversary หรือเข้าร่วม Insider ก็คงได้ใช้ WSL ต้องรอก่อน
เพราะ WSL ยังเป็นรุ่นทดสอบบน Insider Preview
ถ้า Windows 10 Anniversary เปิดจำหน่าย License คงได้ upgrade ต่อไป
แต่ ณ วันนี้ Windows 10 รุ่น 1608 ยังไม่เปิดอัพเดทอย่างเป็นทางการ
https://en.wikipedia.org/wiki/Windows_10_version_history#Windows_10_Anniversary_Update_.28Version_1607.29

win10 : windows features
win10 : windows features

[License]
เครื่องที่ใช้อยู่มี License เป็น Windows 10 home version 1511
และยังไม่ถึงเวลาที่ microsoft จะเปิดให้อัพเดทเป็น 1608
เพราะรุ่น 1608 ที่เผยแพร่อยู่ เป็นรุ่นที่ต้องเข้าโครงการ Insider preview
มีข่าวเมื่อ 29 มิ.ย.59 ว่า microsoft จะเปิดให้ update
เป็น Windows 10 Anniversary Update – Major ตั้งแต่ 2 ส.ค.59
หมายความว่ารออีก 1 เดือนจึงจะได้ใช้รุ่น 1608 และก็จะได้ใช้ WSL อย่างเป็นทางการ
https://blogs.windows.com/windowsexperience/2016/06/29/windows-10-anniversary-update-available-august-2/

Blockly คือเครื่องมือช่วยพัฒนาโปรแกรมแบบวิชวล

blockly
blockly
1. ที่มา
Blockly คือ เครื่องมือพัฒนาโปรแกรมแบบวิชวล (Visual) โดยใช้สัญลักษณ์ภาพแบบจิ๊กซอล แทนคำสั่งมาเรียงต่อกันตามเงื่อนไขที่ต้องการ พัฒนาโดย google for education แล้วเปิดให้ทดลองใช้ (Try Blockly) บนเว็บของกูเกิ้ล หรือนักพัฒนาจะดาวน์โหลดไปติดตั้งบน website ของตนเอง เพื่อพัฒนาต่อยอดได้ ในเครื่องมีอนี้มีกลุ่มของสัญลักษณ์ที่ประกอบด้วย Logic, Loops, Math, Text, Lists, Colour, Variables, Functions
2. รับโปรแกรม (get the code)
โดย download แฟ้ม .zip เมื่อแตกแล้วก็นำไปวางบน server ที่บริการภาษา python
หน้าตาที่ได้ก็จะเป็น blockly แบบที่พบได้ใน demo ซึ่งจะทำงานบน client-side
3. Playground on the demo sever.
บริการใช้งาน Blockly แล้วสร้างเป็น source code : javascript แล้วคัดลอกออกมาได้
เพื่อนำไปใช้ใน compiler ต่อไปได้ แต่ทดสอบประมวลผลไม่ได้
4. บริการ Live Demo : JS Interpreter
สำหรับทดสอบประมวลผล Blockly และรายงานผลผ่านสัญลักษณ์ print ได้
แต่ copy : javascript ไม่ได้
5. code editor + run
ที่ block แล้วมองเห็น code ภาษาต่าง ๆ ทั้ง block, javascript, python, dart, xml
แล้วสั่ง run เพื่อดูผลลัพธ์ หรือ copy code ไปใช้ได้
6. มี Demos ให้ทดสอบการใช้งาน Blockly แบบต่าง ๆ
สร้างเครื่องบิน หรือ code editor ที่สลับไปมาระหว่าง source กับ symbol
7. ตัวอย่างบริการ blockly จากเว็บไซต์ต่าง ๆ
เช่น Blockly Games ใช้สร้างเกมง่าย ๆ ได้
หรือ Appinventor สำหรับ Android apps
8. ตัวอย่าง XML
<xml>
<block type=”variables_set” id=”642″ inline=”true” x=”-51″ y=”18″>
<field name=”VAR”>a</field>
<value name=”VALUE”>
<block type=”text” id=”643″>
<field name=”TEXT”>a</field>
</block>
</value>
<next>
<block type=”controls_repeat_ext” id=”644″ inline=”true”>
<value name=”TIMES”>
<block type=”math_number” id=”645″>
<field name=”NUM”>5</field>
</block>
</value>
<statement name=”DO”>
<block type=”text_append” id=”646″ inline=”false”>
<field name=”VAR”>a</field>
<value name=”TEXT”>
<block type=”text” id=”647″>
<field name=”TEXT”>b</field>
</block>
</value>
</block>
</statement>
<next>
<block type=”text_print” id=”648″ inline=”false”>
<value name=”TEXT”>
<block type=”variables_get” id=”649″>
<field name=”VAR”>a</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</xml>

แก้ไขการจำกัดขนาดการ upload แฟ้มเข้า iis7

iis manager
iis manager

ใช้ script ภาษา asp upload แฟ้มเข้า iis7 server
พบว่าขนาดแฟ้มจำกัดไม่เกิน 200000Bytes
ต้องแก้ไข AspMaxRequestEntityAllowed ก็พบว่าใน
IIS7 เข้าไปที่ iis manager แล้วคลิ๊ก asp
หาใน Limits Properties
พบ Maximum Requesting Entity Body Limit
ผมแก้จาก 200000 เป็น 2000000
ทำให้สามารถส่งแฟ้มขนาด 3 แสนเข้าไปได้ครับ

แต่ก่อนอื่นต้องแก้ permission ของ wwwroot
ให้ user ต่าง ๆ เข้าไป write ได้ โดยแก้ไขใน security ของ folder
http://www.thaiall.com/perlphpasp/source.pl?9123


สำหรับ iis6

metabase writeable
metabase writeable

ดูภาพตามลิงค์นี้ http://www.scriptinstallation.in/uploading_large_files_iis.html
แล้วเปิด c:\Windows\System32\Inetsrv\Metabase.xml
จาก AspMaxRequestEntityAllowed=”204800″
เป็น AspMaxRequestEntityAllowed=”4096000″


สำหรับ iis5.1
http://stackoverflow.com/questions/1792386/uploading-in-asp-to-iis-5-1

ใช้อาร์เรย์เก็บข้อมูล เพื่อตอบตาม index

function to create array
function to create array

อ่านแฟ้มแบบตัวอักษรมาเก็บในอาร์เรย์ เพื่อใช้ตอบการร้องขอข้อมูลตาม index

กรณีแรก ..
ในทางทฤษฎีเราใช้ระบบฐานข้อมูลสำหรับเก็บข้อมูล และใช้คำสั่ง SQL ที่เรียกว่า query ด้วยคำสั่ง select ถามหาข้อมูลที่ต้องการ ซึ่งมีประสิทธิภาพทำงานได้อย่างรวดเร็ว สมเป็นมืออาชีพ แต่ในทางปฏิบัติอาจไม่เป็นเช่นนั้นเสมอไป
เช่น กองฉลากเคยเก็บข้อมูลในระบบฐานข้อมูล ชาวไทยต้องการตรวจผลรางวัลก็กรอกข้อมูลแล้วระบบก็ส่ง query เข้าไปสอบถามจากเครื่องบริการ เป็นเช่นนี้อยู่ระยะหนึ่ง ต่อมาเห็น sanook.com ให้บริการตรวจฉลากกินแบ่ง โดยนำข้อมูลตัวเลขมาเก็บในแฟ้ม html แล้วใช้ javascript เป็นตัวตอบคำถาม ภาระในการสืบค้นการถูกรางวัลกลายเป็นของ script + browser ฝั่งผู้ใช้ ที่ทำงานได้รวดเร็วที่สุดในโลก
ปัจจุบันกองฉลากก็ใช้เทคนิค javascript ทำให้ตรวจฉลากหลายสิบใบได้เร็วมาก เพราะทั้งหมดแทบจะทำงานที่ฝั่งผู้ใช้ ยกเว้นการเปิดเว็บไซต์ในครั้งแรก เพื่อร้องขอการดาวน์โหลดข้อมูลมาไว้ในเครื่องผู้ใช้ที่เกิดขึ้นในครั้งแรก

กรณีที่สอง ..
ข้อมูลปริมาณมาก ย่อมต้องใช้ระบบฐานข้อมูล เพราะมีระบบบริหารจัดการ และค้นคืนได้อย่างมีประสิทธิภาพ แต่ถ้ามีข้อมูลไม่กี่สิบระเบียน ก็ไม่จำเป็นต้องใช้งานระบบฐานข้อมูล เพราะระบบฐานข้อมูลนั้นจำเป็นต้องมีโปรแกรมทำงานที่หลากหลาย แต่ถ้าเก็บข้อมูลในอาร์เรย์ หรือเก็บใน text file แล้วอ่านมาไว้ในอาร์เรย์ ก็จะทำให้เรียกใช้ข้อมูลได้ง่าย และเร็ว เหมือนการทำงานของ cache หรือ ram หรือ harddisk ที่ทำงานได้เร็วกว่า external harddisk สำหรับตัวอย่างนี้ มีข้อมูลใน text file แล้วอ่านมาเก็บใน array โดยกำหนด index ให้แต่ละสมาชิก เมื่อต้องการข้อมูลก็เรียกสมาชิกตาม index ได้ทันที ซึ่งประมวลผลได้เร็ว และไม่เป็นภาระกับระบบฐานข้อมูล โดยฟังก์ชันเขียนให้รองรับการคืนค่าของสมาชิก เช่น ชื่อ-สกุล หรือ ชื่อ-ชื่อกลาง-สกุล หรือ ชื่ออย่างเดียว เมื่อส่งรหัสเข้าไปเรียกจากอาร์เรย์

Source code
$ar_advisor = array();
$ar_advisor = create_ar_advisor(“advisor”,”0″,”1-2″);
echo $ar_advisor[“5601”];
function create_ar_advisor($filename,$f_key,$f_val) {
$ar = array();
$fileaddr = “/data/”. $filename . “.csv”;
$fn = file($fileaddr);
$get_k = split(“-“,”$f_key”);
$get_v = split(“-“,”$f_val”);
foreach($fn as $v) {
$r = split(“\t”,”$v”);
$rk = “”; $rv = “”;
foreach($get_k as $kv) $rk .= $r[intval($kv,10)];
foreach($get_v as $vv) $rv .= $r[intval($vv,10)].” “;
$ar[$rk] = $rv;
}
return $ar;
}

ระบบรับข้อมูลหนึ่ง ถูก แ+ฮ+ก ด้วย script

process of solution
process of solution

วันนี้ได้รับแจ้งว่าระบบเก่า ถูก post h-a-c-k_e-d
จึงเข้าไปแกะ script แบบค่อย ๆ ไล่ไปทีละแฟ้ม
เพราะเขียนไว้นาน และหลายคน จำอะไรไม่ได้เลย

1. ดู source ซึ่งเป็นผลลัพธ์ พบว่า
script ไม่ได้เสียหาย แต่มีการ post script เข้ามาเป็นข้อมูล

2. ในข้อมูลมี script จริง แสดงว่าไม่มีการ convert ข้อมูลก่อน insert

3. เข้าไปดูระบบรับข้อมูลพบว่าติด captcha แต่เป็น plain text แบบง่าย
แสดงว่า script ที่เข้ามาในระบบเป็นขั้นเทพ ถึงแกะ captcha ออกได้

4. เพิ่มการป้องกันใน form รับข้อมูล
โดยกำหนดเงื่อนไขว่า form ต้องถูกเรียกจาก script ที่กำหนด
ถ้าเรียกจากที่ไหน ๆ ก็จะไม่เปิดฟอร์ม

5. อันที่จริงควรเปลี่ยนข้อมูลด้วย stripslashes เข้าฐานข้อมูล
เพื่อล้าง script แต่นั่นเป็นการแก้ปลายเหตุ
จึงแก้ต้นเหตุ คือ ไม่ให้ข้อมูลเข้า จากขั้นตอนที่ 4
หรือเพิ่มการตรวจสอบก่อน insert ซึ่งมีอีกหลายวิธี