Laravel 4 Security

จากเมื่อก่อนที่เคยเขียน Laravel Security ซึ่งในตอนนั้นผมยังใช้ Laravel 3 อยู่ แต่ทุกวันนี้ต้องบอกเลยว่า Laravel 4 นั้นเยี่ยมมากๆ และยังไม่รวมถึง Laravel 4.1 ที่ดีขึ้นไปอีก แต่ขั้นตอนการ update ออกจะสะท้านหน่อยในโปรเจ็คขนาดใหญ่

วันนี้ผมจะเขียนอิงหัวข้อเดิม จะได้เป็นข้อเปรียบเทียบกับ Laravel 3 ได้เพื่อใครที่กำลังตัดสินใจว่าจะใช้ดีหรือไม่ โดยผมจะเขียนอิง Laravel 4 ซึ่งในด้านความปลอดภัยนั้นไม่ได้แตกต่างกับ 4.1 สักเท่าไร

1. CSRF protection หรือการปลอมแปลง http request ที่เรียกข้ามเว็บไซต์ เรื่องนี้ Laravel มีป้องกันอยู่แล้ว โดยเป็นการสร้าง Token ไว้ตรวจสอบ หาอ่านได้ที่ CSRF protection แต่สำหรับคนที่เขียน Route แบบ Controller สามารถเขียน filter ไว้ที่ Controller แบบนี้ได้ (ไม่มีใน doc)

$this->beforeFilter('csrf');

2. Cookie Security เรื่องนี้ไม่ต่างจาก Laravel 3 มากครับ หาอ่านได้ที่ Cookies ซึ่งจริงๆ ต้องบอกรวมๆ ว่าข้อมูลต่างๆ ของ Laravel 4 ทั้ง Cookie Session จะถูกเข้ารหัสทั้งหมด ทำให้ข้อมูลนั้นปลอดภัยครับ แต่ถ้าเรื่องทางเทคนิคเชิงลึก แนะนำให้แกะโค้ดดูครับ

3. SQL-Injection เรื่องนี้ไม่ต้องท้าวความเลย มีป้องกันไว้เหมือนกัน โดย Laravel จะทำงานผ่าน PDO หาอ่านได้ที่ PDO/Prepared statements and stored procedures สรุปให้สั้นๆ คือ ถ้าเรียกทำงานผ่าน Fluent หรือ Eloquent มันก็จะจัดการให้เสร็จ ซึ่งใน Laravel 4 ยังสามารถเขียน query ดิบได้อยู่ แต่มันเป็นสิ่งที่ไม่แนะนำให้ทำครับ เราจึงไม่เห็นหัวข้อของเรื่อง raw query ถูกพูดใน doc ซักเท่าไร (ถูกให้ความสำคัญลดลง)

4. XSS หรือการแทรกโค้ดไม่พึ่งประสงค์ลงหน้าเว็บ เรื่องนี้ Laravel ไม่มีการป้องกันครับ เหมือนเดิมครับ เพราะ PHP ก็มีฟังค์ชั่นพื้นฐานมาเพื่อป้องกันเรื่องพวกนี้แล้วอย่าง strip_tags() and htmlentities() ดังนั้นเรื่องนี้ต้องจัดการกันเองครับ ด้วยการเขียน Validation ให้ครบครับ

เขียนคราวนี้เหมือนเอาบทความเก่ามาแก้ครับ เพราะช่วงนี้งานชุกครับ  /XD

Fatal error: Exception thrown without a stack frame in Unknown on line 0

วันนี้ผมสั่ง composer update บนเครื่อง production ได้ผมได้เจอกับ error ตัวนี้ เคยแต่เห็นคนอื่นเจอ วันนี้ผมได้เจอกับตัวเอง

Fatal error: Exception thrown without a stack frame in Unknown on line 0

สำหรับโปรแกรมเมอร์ไม่ว่าจะเขียนภาษาไหนก็เถอะ แต่ถ้าเจอ error และพออ่านอังกฤษออกก็คงต้องอุทานว่า มันอะไรเนี่ย? ซึ่งจริงๆ วิธีแก้ก็ไม่ยาก (กว่าผมจะงมหาสาเหตุเจอก็โอยาวล่ะ)

อ่านเพิ่มเติม

คุณเป็นเว็บดีไซเนอร์หรือเปล่า?

บทความนี้ขอให้เครดิตกับบทความ So, You’re a Web Designer, Right?  /XD

การทำเว็บสมัยก่อน

ในสมัยก่อนการทำเว็บ flow งานมันจะเป็นแบบนี้

  1. ออกแบบหน้าเว็บด้วย Photoshop หรือ Illustrator (ด้วยเว็บดีไซเนอร์)
  2. ตัดภาพออกมาจัดเป็น HTML และ CSS (ด้วยคนตัด css)
  3. นำมา Implement กับตัวเว็บ (ด้วยเว็บโปรแกรมเมอร์)

แต่พอทำนานๆ เข้า เว็บโปรแกรมเมอร์มักจะพบว่ามันเกิดงานที่การมีซ้อนทับกับงานข้อ 1 และ 2 คืออาจต้องมาแก้ css เพิ่ม เพราะต้องเปลี่ยนความสามารถ ในกรณีเลวร้ายสุดคือรับภาพปุุ่ม 1 ปุ่มมาเพิ่มที่หลังงานที่หลัง

อ่านเพิ่มเติม