ข้ามไปยังเนื้อหาหลัก

Escape / Unescape ข้อความ

เตรียมข้อความให้ใส่ในโค้ดได้อย่างปลอดภัย ไม่ว่าจะเป็น JSON, SQL หรือคำสั่ง Shell

ผลลัพธ์ที่ใส่ escape แล้ว
ผลลัพธ์จะแสดงที่นี่

JSON ใช้ backslash นำหน้า และเปลี่ยนอักขระควบคุมเป็นรูปแบบ \u ตามมาตรฐาน RFC 8259

ประมวลผลในเบราว์เซอร์ของคุณทั้งหมด ข้อความไม่ถูกส่งขึ้นเซิร์ฟเวอร์

เกี่ยวกับเครื่องมือนี้

เครื่องมือ Escape / Unescape ข้อความ เตรียมข้อความให้นำไปวางในโค้ดได้อย่างปลอดภัย ไม่ว่าปลายทางจะเป็น JSON, JavaScript, SQL, คำสั่ง Shell, regular expression หรือไฟล์ CSV

เหตุผลที่ต้องแยกตามปลายทาง เพราะ แต่ละที่มีกฎไม่เหมือนกันเลย SQL ใช้การพิมพ์เครื่องหมายคำพูดซ้ำสองครั้ง ส่วน JSON ใช้ backslash และภายในเครื่องหมายคำพูดเดี่ยวของ shell กลับไม่มีอักขระพิเศษใด ๆ เลย เครื่องมือที่ escape ทุกอย่างเหมือนกันหมดจึงให้ผลผิดอย่างน้อยหนึ่งกรณีเสมอ

ความผิดพลาดตรงนี้ไม่ใช่แค่เรื่องความสวยงาม เครื่องหมายคำพูดที่ไม่ได้ escape ในคำสั่ง SQL คือช่องโหว่ SQL injection และจุดเดียวที่ไม่ได้ escape ใน regular expression ทำให้มันจับคู่กับอักขระอะไรก็ได้แทนที่จะเป็นจุดจริง ๆ

โหมด JavaScript ยัง แยกคำว่า </script> ออกจากกัน ให้อัตโนมัติ เพราะถ้าข้อความนั้นถูกวางในแท็ก script เบราว์เซอร์จะปิดแท็กทันทีตรงนั้น ซึ่งเป็นช่องโหว่ XSS ที่พบบ่อยที่สุดอย่างหนึ่ง ทุกอย่างทำงานในเบราว์เซอร์ ข้อความไม่ถูกส่งออก

วิธีใช้งาน

  1. 1เลือกว่าจะ "ใส่ escape" หรือ "ถอด escape"
  2. 2เลือกว่าข้อความนี้จะไปอยู่ในอะไร เช่น JSON, SQL หรือคำสั่ง Shell
  3. 3วางข้อความลงในช่อง ผลลัพธ์จะแสดงทันที
  4. 4คัดลอกช่อง "พร้อมวางลงในโค้ด" ถ้าต้องการเครื่องหมายคำพูดครอบมาให้เลย

คำถามที่พบบ่อย

ทำไม SQL ถึงใช้เครื่องหมายคำพูดซ้ำสองครั้ง ไม่ใช่ backslash
เพราะมาตรฐาน SQL กำหนดให้ escape เครื่องหมายคำพูดเดี่ยวด้วยการพิมพ์ซ้ำ (O''Brien) ส่วน backslash ไม่ใช่อักขระ escape ในมาตรฐาน การใช้ backslash จึงอาจใช้ไม่ได้หรือได้ผลไม่ตรงกันในแต่ละฐานข้อมูล
การ escape ป้องกัน SQL injection ได้จริงไหม
ช่วยได้ แต่ไม่ใช่วิธีที่ถูกต้องที่สุด วิธีที่ปลอดภัยกว่ามากคือใช้ prepared statement หรือ parameterized query ซึ่งแยกข้อมูลออกจากคำสั่งตั้งแต่ต้น เครื่องมือนี้เหมาะกับการเตรียมค่าคงที่หรือดูว่าค่าที่ถูก escape แล้วหน้าตาเป็นอย่างไร
ทำไมโหมด JavaScript ถึงแยกคำว่า </script> ออกจากกัน
เพราะถ้าข้อความมีคำว่า </script> อยู่ แล้วนำไปวางในแท็ก script เบราว์เซอร์จะปิดแท็กตรงนั้นทันที ทำให้โค้ดที่เหลือหลุดออกมาเป็น HTML ซึ่งเป็นช่องโหว่ XSS ที่พบบ่อย
ทำไมโหมด Shell แทบไม่เปลี่ยนอะไรเลย
เพราะภายในเครื่องหมายคำพูดเดี่ยวของ shell ไม่มีอักขระใดมีความหมายพิเศษเลย ทั้ง $ ` และ * จึงไม่ต้อง escape มีแค่ตัวเครื่องหมายคำพูดเดี่ยวเองที่ต้องใช้วิธีปิด-ใส่-เปิดใหม่
ข้อความภาษาไทยต้อง escape ไหม
ไม่ต้อง อักษรไทยไม่ใช่อักขระพิเศษในรูปแบบใดเลย เครื่องมือจึงปล่อยไว้ตามเดิมทุกโหมด

เครื่องมือที่เกี่ยวข้อง

เข้ารหัส / ถอดรหัส Base64

เข้ารหัส/ถอดรหัส Base64 รองรับภาษาไทย

เข้ารหัส / ถอดรหัส URL

เข้ารหัส/ถอดรหัส URL รองรับภาษาไทย

เข้ารหัส / ถอดรหัส HTML Entity

เข้ารหัสและถอดรหัส HTML entity และอักขระพิเศษ

จัดรูปแบบ JSON (JSON Formatter)

จัดรูปแบบ ตรวจสอบ และย่อ JSON สำหรับนักพัฒนา