รูรั่วใน AJAX

tags:

บริษัทด้านความปลอดภัย Fortify Software ได้ออกมาเตือนว่าค้นพบรูรั่วในชุดพัฒนา AJAX เกือบทุกยี่ห้อ

Fortify Software เรียกรูรั่วนี้ว่า JavaScript Hijacking แนวคิดของมันคือถึงแม้ว่า X ใน AJAX จะหมายถึง XML ที่ใช้เป็นสื่อกลางในการส่งข้อมูล แต่เอาเข้าจริงแล้ว AJAX ก็ไม่จำเป็นต้องใช้ XML เสมอไป อาจส่งข้อมูลเป็น HTML, text หรือ JavaScript (ในที่นี้คือ JSON) ก็ได้ ซึ่งถ้าเป็น XML หรือ HTML แล้ว เว็บเบราว์เซอร์จะมีนโยบายด้านความปลอดภัย "same origin policy" ที่บังคับว่าข้อมูลต้องมาจากโดเมนเดียวกัน แต่ไม่มีนโยบายนี้กับ JavaScript

รูรั่วนี้ทำให้ผู้ประสงค์ร้ายสามารถล้วงข้อมูลหรือส่งข้อมูลปลอมให้กับโปรแกรมที่เป็น AJAX ได้

Fortify ระบุว่ามีชุดพัฒนา AJAX จำนวน 11 ตัวจากทั้งหมดที่ทดสอบ 12 ตัวที่มีรูรั่วนี้ ได้แก่ Microsoft ASP.NET AJAX (Atlas), XAJAX และ Google Web Toolkit, Prototype, Script.aculo.us, Dojo, Moo.fx, jQuery, Yahoo! UI, Rico และ MochiKit ซึ่งนักพัฒนาได้รับแจ้งเรื่องปัญหานี้แล้ว และเตรียมจะออกรุ่นแก้ไขต่อไป

ที่มา - CBR Online

deans4j's picture

บอกแล้วให้ใช้ Applet : P

mk's picture

Flash ยังดีกว่าเลย

deans4j's picture

ชอบ Flex/Flash ก็ใช้สิ ผมสนับสนุนการใช้ DSL มาแต่ไหนแต่ไร

mk's picture

ใช่ๆ สงสัยต้องไปหัดเขียน (อย่างน้อยมันก็ไม่ช้า)

deans4j's picture

ก็ถ้าใส่ JavaScript เยอะๆ มันก็ช้าเป็นธรรมดาแหละ เลยไม่แนะนำไง

mk's picture

ผมหมายถึง applet น่ะ คงไม่มีใครเข้าใจผิดละมั้ง

deans4j's picture

อ้าวหรอ ผมนึกว่าหมายถึง JavaScript ซะอีก ทั้ง Yahoo mail, hotmail ผมละอืดจะแย่เลย

ว่าแต่ว่าใช้ applet ไหนแล้วช้า?

mk's picture

JavaScript ช้าเพราะใส่ลงไปเยอะ ถ้าใส่น้อยก็ไม่ช้า แปรผันตรง
Applet ใส่น้อยก็ยังช้า ไม่ว่าจะตัวไหน

deans4j's picture

ขอดูตัวอย่างที่เรียกว่า "ช้า"

keng's picture

ช้าคงหมายถึงตอนโหลด

sugree's picture

Applet ไม่ช้า แต่เครื่องทั้งเครื่องน่ะช้าไปเลย เพราะโดนสูบแรมจนเหลือแค่ปริ่มๆ

chakrit's picture

่java มันช้าเป็นทุนอยู่แล้วอ่ะฮะ
ไม่แน่ใจว่าทำไม
แต่อย่างน้อยก็เครื่องผมล่ะ 1
ที่ java ช้ากว่า flash และ js

wiennat's picture

applet ไม่ช้าหรอก เวลารัน applet ที่เร็ว นิ่ง เจ๋งมาก แต่โปรแกรมอื่นจะวอดวายกันหมดเพราะ โดน applet ดึงซีพียูกับแรมไปหมด

เรียกว่าใช้ซีพียูไม่คุ้ม จะดีกว่ามั้ง

sirn's picture

​อาจส่งข้อมูล​เป็น​ HTML, text ​หรือ​ JavaScript ​(​ใน​ที่นี้คือ​ JSON) ​ก็​ได้​ ​ซึ่ง​ถ้า​เป็น​ XML ​หรือ​ HTML ​แล้ว​ ​เว็บเบราว์​เซอร์​จะ​มีนโยบายด้าน​ความ​ปลอดภัย​ "same origin policy" ​ที่บังคับว่าข้อมูล​ต้อง​มา​จาก​โดเมนเดียว​กัน​ ​แต่​ไม่​มีนโยบายนี้​กับ​ JavaScript

อ่านประโยคนี้แล้วงงๆ ถ้าไม่ไปอ่านที่ต้นฉบับ สรุปก็คือเป็นปัญหาที่บราวเซอร์ไม่ยอมทำตามนโยบายนี้กับ JSON สินะครับ

deans4j's picture

นโยบาย same origin มันเป็นนโยบายปกติของ browser ทั่วไปกับ HTML, XML แต่มันไม่ครอบคลุมถึง JavaScript

JSON เป็นทางเลือกอื่นแทนที่จะส่งข้อมูลด้วย XML ให้ง่ายกว่าก็ส่งเป็น JavaScript มันซะเลย แต่พอมันเป็นอย่างนี้ก็เข้าทางโจร เพราะเป็นการเปิดช่องให้เล่นอะไรแผลงๆ โดยแทนที่จะส่งข้อมูลกลับมาที่ browser กลับให้ส่งไปที่ผู้ก่อการร้ายแทน

sirn's picture

ประเด็นของผมคืออ่านแล้วงงน่ะครับ เพราะ AJAX มันก็เป็น JavaScript อยู่แล้ว แล้วไม่ใช้นโยบายนี้กับ JavaScript ก็เลยมึนๆ

deans4j's picture

เข้าใจแล้วครับ ผมก็งงเหมือนกัน แต่ผมก็ว่าคำพูดของคุณ sirn มันหมิ่นเหม่ด้วย เพราะไปใช้คำว่า "ไม่ยอมทำตาม" ซึ่งอันที่จริงมันไม่ได้ขัดขืน แต่บราวเซอร์มันไม่ได้ใช้นโยบายนี้เลยด้วยซ้ำ แล้วมันเป็นกับ JavaScript ไม่เฉพาะกับ JSON

msmart's picture

เป็นจริงๆเหรอ ... เหมือนหลายๆตัวไม่น่าจะเป็นนะ

panuta's picture

อ่านนี่จะเข้าใจได้ง่ายกว่า

Security for GWT Applications

ในข่าวนั้นมันเขียนแล้วนึกภาพไม่ออก

-----------------------
http://www.seasandsong.com/

ipats's picture

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

ของ flash เองมันก็มี crossdomain.xml
javascript ก็น่าจะมีมั่ง :D

----------
iPAtS

iake's picture

applet ช้าเหรอครับ
พวกโปรแกรม realtime หุ้น ไม่เห็นมันจะช้าเลย ใช้ applet

แต่ realtime ที่ใช้ flash อย่าง โปรแกรม streaming ของ settrade.com นี่มันโหลด cpu อย่างหนักเลย ถ้าเครื่องไม่แรงล่ะก็ ใช้ไม่ได้

ผมไม่ค่อยชอบ flash เท่าไหร่

iake's picture

[เข้ามาเพิ่มเติม]

เรื่อง applet ช้านี่ ผมเจอเข้ากับตัวเองแล้วละ
Realtime เทรด Futures ของ AFET นี่กว่าจะโหลดเสร็จ
นั่งเคี้ยวหมากฝรั่งจนหายหวานแล้วก็ยังโหลดไม่เสร็จ

- - - - - - - -
http://iake.blogspot.com

mrkrich's picture

อืมมพึ่งนั่งดู JSON ไม่นานนี่เองแฮะ ตกลงมันมีรูรั่วหรอนี่ - -*
---
ก่อนหน้าจะมี AJAX เคยคิดจะใช้ FLASH แทนอยู่เหมือนกัน
(เพราะรู้สึกว่ามันไม่ยุ่งยากเหมือนกับการนั่งเีขียน Applet เอง)
แต่ก็ไม่ได้ทำเพราะ FLASH มันมีข้อด้อย
ในเรื่องการจัดการหน่วยความจำ (เรื่อง Garbage collection)
ส่วนถ้าจะให้ดีจริงๆ คงต้องไปนั่งเขียน Director มั๊ง เขียนเป็น
Shockwave เต็มๆไปเลยจะช่วยได้ (แต่ก็นะตอนนี้มี AJAX แล้วนี่)
---
เรื่อง Applet ช้า .. ผมว่าเป็นอย่างที่พี่ sugree ว่านะครับ คือ
Java มันชอบกิน RAM + CPU สูงมากๆ โดยส่วนตัวแล้วผมไม่ชอบ
การใช้ Applet หรือ ActiveX เท่าไหร่ เพราะมันไม่ common
คือมันชอบขึ้นมาถามให้ confirm นู่นนี่อยู่เรื่อยน่าเบือครับ
สำหรับคนใช้งานเว็บส่วนใหญ่แล้วผมมั่นใจว่า มีอะไรให้เลือก-
ให้ตัดสินใจน้อยเท่าไหร่ยิ่งดี

pittaya's picture

Applet มันจะทำ browser นิ่งไปพักนึงตอนที่มันพยายามจะ initialize ตัวมันขึ้นมานะ
แต่โหลดเสร็จแล้วก็ไม่ช้าเท่าไหร่ ยกเว้นตอนสลับหน้าต่างไปๆ มาๆ เนี่ย จะมีหน่วงๆ ให้เห็น

สรุปว่าชอบ flash มากกว่า

Gmz's picture

ผมชอบเทคนิคของ GWT มากกว่า อย่างน้อย ๆ ผมว่ามันประยุกต์ได้ดีกว่า Applet หรือ JSF
แทรก javascript แบบเขียนเองลงไปในโค้ดก็ได้ ใช้ร่วมกันระหว่าง java ได้เลย GWT นี่แหละตัวจริง บางทีก็เอาไปผสมกับ jsp ธรรมดา ๆ บางครั้งผมก็ผสมกับ xhtml ปกติ (อย่างหลังนี่กินแรมน้อยมาก ๆ ผมยังเป็นพวกที่ชอบทำทุกอย่างให้กินแรมน้อยที่สุดเท่าที่จะทำได้ ไม่รวยอ่ะ)

ที่เลือก GWT เพราะว่า java ตรวจสอบความผิดพลาดได้ง่ายกว่า javascript เพียว ๆ แล้วก็ถ้าให้ออกแบบเป็น UML อาจารย์จะเข้าใจง่ายกว่า ส่วน javascript ไม่รู้จะใช้อะไรทำ design น่ะครับ

นายขโมย's picture

ตกลง applet มันช้าตอน load หรือตอนทำงานกันแน่

ผมว่าแค่ load ช้าเท่านั้นนะ

Site Search

 
Web blognone.com

Poll