tech

กรณีผิดฝาผิดตัวใน Twitter และ Facebook

ช่วงหนึ่งเดือนที่ผ่านมามีหลายคนพบว่าจู่ ๆ หน้า Twitter หรือ Facebook ที่เปิดอยู่ก็กลายเป็นของคนอื่น ผมก็เคยเจอหนหนึ่งที่ไปโผล่หน้า Facebook ของหญิงสาว เป็นเรื่องค่อนข้างน่ากลัวเพราะเราสามารถทำอะไรกับบัญชีผู้ใช้นั้นได้มากมาย เช่น อัพเดตข้อความ ลบเพื่อน ดูรายชื่อเพื่อน

เท่าที่ผมทราบ เรื่องนี้เกิดกับผู้ที่ใช้บริการอินเทอร์เน็ตของ True และก็น่าจะเป็นปัญหาที่ True เอง ดังที่ผู้ใช้อินเทอร์เน็ตชื่อ Sajal ตั้งข้อสังเกตไว้ว่า หากเป็นปัญหาที่ Twitter จริง เหตุผิดฝาผิดตัวนี้ก็น่าจะเกิดกับคนต่างชาติบ้าง เพราะ Twitter เองก็มีผู้ใช้หลักสิบล้านบัญชี เท่าที่ผมเห็น ก็มีแต่คนไทยเท่านั้นที่พบปัญหา

ทีนี้ ปัญหานี้น่าจะเกิดจากอะไร ผมคิดว่าน่าจะเป็นเรื่องคุกกี้ (Cookie) ชื่อฟังดูน่ากิน แต่อาจเป็นช่องโหว่ด้านความปลอดภัยและความเป็นส่วนตัวที่น่ากลัว

ขออนุญาตอธิบายเล็กน้อยว่าคุกกี้คืออะไร คุกกี้คือข้อมูลชิ้นเล็ก ๆ ที่เว็บไซต์สามารถให้เบราว์เซอร์ของเราเก็บเอาไว้ใช้ประโยชน์ได้ เช่น การที่เข้าเว็บไซต์ขายของ เลือกของลงตะกร้าเสร็จแล้วปิดหน้านั้นไป เปิดมาใหม่แล้วของที่เลือกไว้ยังอยู่ ก็เป็นเพราะเว็บไซต์นั้นส่งข้อมูลรหัสตะกร้าสินค้าของเรามาให้เบราว์เซอร์เก็บเป็นคุกกี้ เวลาที่เราเข้าเว็บไซต์นั้นอีกครั้ง เบราว์เซอร์ก็จะส่งคุกกี้ไป และเว็บไซต์ก็จะสามารถดึงข้อมูลล่าสุดออกมาได้

ตัวอย่างของคุกกี้ที่เราน่าจะคุ้นเคยกันก็คือ การใช้มันเป็น "ใบผ่านทาง" เข้าเว็บไซต์โดยไม่ต้องใส่รหัสผ่านบ่อย ๆ ด้วยการติ๊กในช่อง Remember Me เวลาจะล็อกอินเข้าเว็บไซต์ต่าง ๆ ทำให้แม้ปิดเบราว์เซอร์ไปแล้ว เปิดมาใหม่ ไม่ต้องใส่รหัสผ่าน เนื่องจากว่าที่เว็บไซต์ปลายทางยังเก็บข้อมูลไว้ว่า ผู้ใช้คนนี้มีข้อมูลคุกกี้แบบนี้อยู่ หากใครเอาข้อมูลคุกกี้ที่ตรงกันส่งมาให้ ก็จะถือว่าล็อกอินได้เลย

ถึงตรงนี้เราอาจจะมองเห็นปัญหาแล้ว ว่าแม้เราจะไม่รู้รหัสผ่าน แต่ถ้ามีคุกกี้ของคนอื่นอยู่ ก็เป็นไปได้ที่จะสวมรอยเป็นคนคนนั้นได้

แล้วคุกกี้นี้มันขโมยกันได้หรือไม่ คำตอบที่น่าตกใจคือ ขโมยได้ และขโมยได้ง่ายพอสมควร

เวลาที่เราใช้อินเทอร์เน็ตไร้สายในที่สาธารณะ ข้อมูลต่าง ๆ จะวิ่งผ่านอากาศอย่างที่ไม่สามารถควบคุมให้พุ่งไปสู่เป้าหมายอย่างเดียวได้ เป็นการเปิดโอกาสให้ใครก็ได้ สามารถดักฟัง (sniff) การรับส่งข้อมูลของเรา และแน่นอน สามารถดักจับคุกกี้ของเราได้ด้วย

เราอาจจะเคยได้ยินข่าวคราวของซอฟต์แวร์ชื่อ Firesheep ที่จะคอยดักจับข้อมูลต่าง ๆ ในอากาศ และเลือกเอามาเฉพาะข้อมูลที่เป็นคุกกี้ของเว็บไซต์ดัง ๆ อย่าง Facebook จากนั้นก็จะสวมรอยเป็นเจ้าของคุกกี้ผู้โชคร้ายนั้นให้อย่างง่ายดาย

กลับมาที่ปัญหาผิดฝาผิดตัว ผมคิดว่าสาเหตุก็คือ True นั้นใช้ Transparent Proxy นั่นคือการเชื่อมต่ออินเทอร์เน็ตของเราจะต้องผ่านเครื่อง "คนกลาง" (proxy) ของ True ก่อน ซึ่งจริง ๆ มันก็มีประโยชน์ เช่น หากเราจะดูวิดีโอคลิปยอดนิยมจาก YouTube เราก็ไม่จำเป็นต้องดาวน์โหลดจากเครื่องเซิร์ฟเวอร์ในต่างประเทศ เนื่องจากน่าจะมีคนดาวน์โหลดมาดูก่อนหน้าเราแล้ว และข้อมูลยังถูกเก็บใน Proxy เราก็ดาวน์โหลดจาก Proxy ของ True ที่ตั้งอยู่ในประเทศแทน เพื่อความเร็วที่สูงกว่า

การที่การเชื่อมต่อจำนวนมากต้องผ่าน Proxy นี้เอง อาจจะมีปัญหาบางอย่างที่ทำให้เกิดการสลับคุกกี้กัน ซึ่งเราก็ต้องสังเกตกันต่อไป ว่าปัญหามีสาเหตุอย่างนี้จริงหรือไม่

การป้องกันทั้งจากเหตุสับสนใน Proxy นี้ และจาก Firesheep น่าจะมีดังนี้

  1. หมั่นออกจากระบบเว็บไซต์ (log out) เมื่อใช้งานเสร็จแล้ว การออกจากระบบจะทำให้ข้อมูลคุกกี้ของเราในเว็บไซต์นั้นหมดอายุ คุกกี้ที่เครื่องเราเก็บไว้และอาจมีคนดักจับได้ก่อนหน้านี้ก็จะใช้ไม่ได้ นอกจากนี้ เราไม่ควรกำหนดให้เว็บไซต์จดจำการล็อกอินของเรา ด้วยเหตุผลเดียวกัน

  2. ใช้บริการเข้ารหัสการรับส่งข้อมูล ถ้ามี เว็บไซต์ชื่อดังส่วนมากมีบริการเข้ารหัสการรับส่งข้อมูลที่เรียกว่า SSL (สังเกตจากคำว่า https หน้าที่อยู่เว็บไซต์) ซึ่งปัจจุบันนี้นิยมใช้ตอนที่เราล็อกอินเพื่อกันการดักอ่านรหัสผ่าน แต่เว็บไซต์ส่วนมากไม่ได้เปิดให้ใช้ SSL กับการท่องเว็บทั่ว ๆ ไปตั้งแต่แรก เช่น หากเราจะล็อกอินเข้า Facebook ข้อมูลที่ถูกเข้ารหัสจะมีเพียงชื่อผู้ใช้กับรหัสผ่านเท่านั้น ต่างกับ Gmail ที่เปิด SSL ตลอดการใช้งาน

    เพราะฉะนั้นเราควรเลือกใช้ SSL ทุกครั้งที่มีโอกาส เพื่อความสะดวกเราอาจดาวน์โหลดส่วนเสริมของเบราว์เซอร์ที่ช่วย "บังคับ" ให้เว็บไซต์เลือกใช้ช่องทางที่มี SSL โดยส่วนเสริมนี้ของ Firefox มีชื่อว่า HTTPS Everywhere และของ Chrome มีชื่อว่า KB SSL Enforcer

  3. ใช้บริการ Proxy หรือ VPN ที่น่าเชื่อถือ แนะนำให้หาอ่านต่อจาก Google

พิมพ์ข้อความสะดวกสวยงามด้วย Markdown

ก่อนอื่นขออธิบายคำศัพท์บางอย่าง

  • HTML - เรียกง่าย ๆ ก็คือภาษาที่ใช้เขียนหน้าเว็บ มีลักษณะเป็น "Markup Language" คือถ้าต้องการทำอะไรกับข้อความก็หาอะไรพิเศษไปครอบไว้ ตัวอย่างเช่นจะทำอักษรตัวหนา (Strong) ก็ครอบข้อความด้วยคำสั่ง strong จาก <strong>หนา</strong> ก็จะกลายเป็น หนา
  • WYSIWYG Editor - หรือตัวช่วยพิมพ์แบบ What You See Is What You Get คือโปรแกรมเล็ก ๆ ฝังในหน้าเว็บที่ช่วยใส่คำสั่ง HTML กับข้อความให้เราอย่างเนียน ๆ โดยที่เราไม่ต้องพิมพ์คำสั่งเอง แต่กดปุ่มเอา ดูผลลัพธ์ได้ขณะที่พิมพ์ หน้าตาประมาณข้างล่างนี้ (ของ wordpress.com) ของแต่ละที่ก็อาจจะมีลูกเล่นต่างกันไป

WYSIWYG

ประเด็นก็คือ เวลาที่เราพิมพ์อะไรยาว ๆ เพื่อโพสต์ออนไลน์ แล้วกลัวว่าพิมพ์ ๆ อยู่จะเกิดปัญหาเครื่องดับ เน็ตหลุด ทำให้มันหาย เราก็ต้องหาอะไรมาพิมพ์เก็บไว้ก่อน จะพิมพ์ใส่ Notepad มันก็ได้แต่ข้อความโล้น ๆ ไม่มีตัวหนาตัวเอียง จะพิมพ์ใส่ Word (WYSIWYG เช่นกัน) แล้วเวลาก๊อบมาใส่ตัว WYSIWYG ในหน้าเว็บมันก็อาจจะไม่ได้อย่างใจ ต้องมานั่งแก้ใหม่ วันนี้มีทางออกมาเสนอ นั่นคือการพิมพ์แบบ Markdown

Markdown เป็นรูปแบบ (syntax) การพิมพ์แบบที่ประนีประนอมความเป็นข้อความโล้น ๆ กับการจัดแบบอักษรเข้าด้วยกัน (พูดอีกอย่างหนึ่ง คือเป็น Markup ที่จำง่าย ใกล้สามัญสำนึกกว่า HTML) ดูตัวอย่างก่อนดีกว่า

ถ้าพิมพ์ **หนา** ก็จะได้ หนา

ถ้าพิมพ์ _เอียง_ ก็จะได้ เอียง

ถ้าพิมพ์

- รายการ 1
- รายการ 2
- รายการ 3

ก็จะได้

  • รายการ 1
  • รายการ 2
  • รายการ 3

การทำงานของมันก็คือ เราก็พิมพ์ข้อความไปตามรูปแบบ Markdown นี่ แล้วเวลาจะแสดงผลในหน้าเว็บก็ติดตั้งส่วนเสริมของเว็บไซต์ให้แปลงรูปแบบข้อความ Markdown เป็น HTML (ต่างจากพวก WYSIWYG ที่เก็บข้อมูลเป็น HTML ไว้เลย) ซึ่งส่วนเสริมนี้ก็มีอยู่ในตัวช่วยจัดการเว็บไซต์ยอดนิยมอย่าง Drupal และ Wordpress อยู่แล้ว (จะเอาตัวแปลง Markdown ไปเชื่อมกับเว็บแบบอื่น ๆ ก็ไม่ยากเลย)

ข้อดีของมันก็คือ ในข้อมูลดิบก่อนการแสดงผลที่เป็นข้อความโล้น ๆ เนี่ย มันก็มีการเน้นแบบอักษรบ้างอยู่แล้ว คือแม้จะไม่มีตัวแปลง Markdown ก็ยังอ่านรู้ความว่าคนพิมพ์ต้องการจัดรูปแบบอะไรตรงไหน และยังแก้ไข คัดลอก เผยแพร่ ง่ายกว่าแบบ WYSIWYG ที่พอเกิดความผิดพลาดอาจจะแก้ได้ยากกว่า ความสามารถบางอย่างพวกเชิงอรรถ1 ผมว่า Markdown นี่ง่ายกว่าด้วยซ้ำ บล็อกนี้ก็ใช้ Markdown

หากอยากลองก่อน ก็ลองได้ที่นี่ ชาว Drupal และ Wordpress ก็ไปโหลดส่วนเสริมกันมาได้ตามสะดวก


  1. ตัวอย่างเชิงอรรถ แค่พิมพ์ [^1] ตรงที่อ้างถึง กับที่อธิบาย สองที่ก็เสร็จแล้ว 

How email softwares might reveal your location

This is not a new thing. It was me who just realised it a couple of days ago. If you are using an email client software like Thunderbird or Outlook then you might have revealed your location, or at least your IP address, unintentionally. Here's how.

For those who might not be familiar with technical jargons, these might help:

  • IP address - A set of digits assigned to your computer when you connect to a network to distinguish you from other people. Just like usual addresses, normally we are assigned "local" IP addresses in schools or workplaces. This means you and your friends might be behind one IP address of your organisation's internet connection.
  • Internet Service Provider (ISP) - Those companies you pay for you internet connection. Leading ones here in Thailand are TOT, True, and 3BB.

Just like normal postal service, email was designed to have a level of traceability. Every email contains some "routing information" in its header. Here's how it looks:

example email header

And this is no secret. If you use Gmail you can view the header by selecting "Show original" menu.

Gmail's show original

There should be a similar option (might sound like "view source) in other email services as well. I'm too lazy to capture screenshots from all.

So, let's look at what happens when you use an email software:

  1. You open the software and type in the receipients and some text.
  2. You press "Send".
  3. The software connects to a mail server of whatever service you use.
  4. The software logs in with your username and password, encrypted or not depending on your configuration.
  5. The software sends out your email.

At the point that the software connects to the server, your IP address is sent along. It can be found in the email's header like this one.

My email header

From above, I sent an email from Thunderbird and my IP address was included. You can see both my local IP address (192.168.1.40) and my house's IP address (58.9.xxx.xxx). I can even tell which ISP I use. You might try looking for the word "Received" in your or your friend's email header.

The IP address together with the time can be used to determine my account information of the internet connection I use, and that can be uncomfortable. So let's see what we can do about that.

  • Use a web-based interface: When we use Gmail or Hotmail from the website, we are working on their servers. Our IP addresses in the header would be those of the servers instead.
  • Use a proxy server, or a VPN: This is a bit more advanced and can be a whole new entry. For now I recommend you to consult Google.

There might be some more ways to protect your privacy. If anyone has anything to share you are more than welcome.

Syndicate content