Skip to content
CodingThailand's Blog
CodingThailand's Blog

by โค้ชเอก

  • Home
  • About Me
  • CodingThailand.com
CodingThailand's Blog

by โค้ชเอก

3 แนวทางง่ายๆ เขียน PHP ให้ปลอดภัย แค่ใส่ใจกับอินพุต

14/05/2016

อย่าเชื่อ!! ว่าข้อมูลที่รับมาจากแหล่งที่เราควบคุมไม่ได้ ไม่ว่าจะเป็น $_GET,$_POST,$_REQUEST,$_COOKIE,$argv,file_get_contents(),Remote databases,Remote APIs และ ข้อมูลทุกอย่างที่มาจาก Client ว่าจะปลอดภัยครับ เราควรต้องกรอง และคอยตรวจสอบความถูกต้องของข้อมูลเสมอ ดังนี้

  1. ควรกรองข้อมูลอักขระพิเศษต่างๆ จาก HTML ด้วย เช่น การใช้ฟังก์ชัน htmlentities() ตัวอย่าง
    <?php 
    $input = '<p><script>alert("ยินดีด้วยคุณถูกรางวัลที่ 1!");</script></p>'; 
    echo htmlentities($input, ENT_QUOTES, 'UTF-8');
    ?>

    ฟังก์ชัน htmlentities() จะช่วยให้เรากรองและแปลง HTML ให้กลายเป็น string ที่ปลอดภัยครับ หรือใครอยากลองเล่น Html Purifier Libray ตามไปได้ที่ http://htmlpurifier.org

     

  2. ถ้ารับข้อมูล input จาก user และมีการกรอกข้อมูล เช่น อีเมล์,โทรศัพท์,Urls ต่างๆ ก็ควรใช้ฟังก์ชัน filter_var() สำหรับกรองข้อมูลครับ ฟังก์ชันนี้จะช่วยกรองข้อมูล เช่น email,integers,floats,URLs และอื่นๆ ตัวอย่าง เช่น
    <?php 
    $email = 'codingthailand@gmail.com'; 
    $emailSafe = filter_var($email, FILTER_SANITIZE_EMAIL);
    ?>

    การกรองข้อมูลอีเมล์ตามตัวอย่างนี้ จะเอาอักขระต่างๆออกให้ทั้งหมด ยกเว้น ตัวอักษร,ตัวเลข และ !#$%&’*+-/=?^_`{|}~@.[] นอกจากอีเมล์ ก็มี Sanitize filters อีกหลายตัว เช่น FILTER_SANITIZE_NUMBER_INT,FILTER_SANITIZE_URL,FILTER_SANITIZE_NUMBER_FLOAT เป็นต้น

  3. การตรวจสอบความถูกต้องข้อมูลเราสามาถใช้ฟังก์ชัน filter_var() เช่นเดียวกัน โดยสามารถตรวจสอบได้หลายอย่างเช่น Booleans, emails, floats, integers, IP addresses ฯลฯ ตัวอย่าง เช่น
    <?php 
    $input = 'codingthailand@gmail.com'; 
    $isEmail = filter_var($input, FILTER_VALIDATE_EMAIL); 
    if ($isEmail !== false) echo "Success"; } 
    else 
    { echo "Fail"; }
    ?>

    นอกจากนี้ก็มี Validate filters อีกหลายตัวเช่น FILTER_VALIDATE_FLOAT,FILTER_VALIDATE_IP,FILTER_VALIDATE_REGEXP เป็นต้น

    ใส่ใจกับความปลอดภัยด้วยนะครับ 🙂

Views: 2637

PHP PHP

Post navigation

Previous post
Next post

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Posts ล่าสุด

  • การใช้งาน Prefetching ใน Next.js
  • 14 ข้อคิด เพื่อการเป็น Developer ที่ดีขึ้น จาก “Lee Robinson”
  • เคยเจอ “TypeError: Cannot read property ‘x’ of undefined” หรือเปล่า
  • บันทึกการเขียนเว็บไซต์ใหม่ในรอบ 10 ปี ย้ายมาใช้ Next.js
  • ทำไมการจัดการ Error ใน JavaScript ถึงเป็นเรื่องท้าทาย?

Recent Comments

    หมวดหมู่

    • .NET
    • AI
    • Android
    • Angular
    • Angular 2
    • Coding
    • CSS
    • Database
    • Editor
    • Flutter
    • Git
    • HTML5
    • Ionic 2
    • Ionic 4
    • Ionic Framwork
    • JavaScript
    • Laravel
    • Laravel 5
    • Next.js
    • Node.js
    • PHP
    • PHP 7
    • Plugins
    • React
    • React Native
    • Template
    • Tools
    • TypeScript
    • UI
    • Uncategorized
    • Vue.js
    • XAMPP
    • Yii
    • คอร์สเรียน
    • แรงบันดาลใจ

    Archives

    • July 2025
    • April 2025
    • November 2024
    • October 2024
    • April 2020
    • February 2020
    • August 2019
    • September 2018
    • August 2018
    • February 2018
    • November 2017
    • October 2017
    • August 2017
    • July 2017
    • April 2017
    • October 2016
    • August 2016
    • May 2016

    Tags

    .NET android Angular Angular 2 Atom Coding Coding Standard CSS CSS 3 Datepicker Express.js extensions Git HTML HTML5 Ionic2 JavaScript Laravel5 laravel 5.5 MariaDB Material Design MySQL Node.js npm PHP PHP7 plugins PouchDB recaptcha Restful sail.js template typescript typscript XAMPP Yii2

    ผู้เยี่ยมชม

    • 0
    • 1,818,148
    • 547,557
    • 2,662
    ©2025 CodingThailand's Blog | WordPress Theme by SuperbThemes