อยากซ่อน url พวก id ที่เป็นตัวแปร GET เวลาเรียกดูข้อมูลเพื่อป้องกันการแก้ไข id บน url ครับ
ส่งเป็น GET ซ่อนไม่ได้ครับ ให้ส่งเป็น post
หรือ encode แล้ว decode ที่หลัง
ตัวอย่างง่ายๆ ประยุกต์เพิ่มเติมเอาเอง
้
Code (PHP)
<?php
$hash = 'abcd'.base64_encode($id);
echo 'http://yourdomain/load.php?hash='.$hash
//ตอนรับ
$id = base64_decode( substring($hash,3));
Date :
2020-05-03 07:02:48
By :
Chaidhanan
ขอบคุณครับ encode ลองเเล้ว งง ว่าจะเปลี่ยนเป็น POST เเต่ปุ่มในตารางที่ไม่ใช่ form แบบนี้มันส่งได้ไหมครับ
Date :
2020-05-03 12:21:53
By :
1607845825935583
ส่ง method post
แต่ว่าก็ยังแก้ได้อยู่ดี เพียงแต่ต้องใช้ความสามารถอีกหน่อย ข้อเสียคือส่งลิ้งค์ให้คนอื่นไม่ได้เลย
อย่างเช่นคุณมีปัญหาต้องให้ลูกน้องแก้งาน id 15 แต่ได้แต่บอก ส่งลิ้งค์ให้ไม่ได้เพราะเป็น method post
วิธีที่เหมาะคือ encode/decode อย่างที่คห.ข้างบนบอกไว้แล้ว ก็จะช่วยให้กันการแก้ url เองได้และส่งลิ้งค์ได้
หรือ ใช้ nonce (number once) ช่วย (แต่ก็ส่งลิ้งค์ไม่ได้เพราะจะติดปัญหา session nonce ไม่ตรง)
อย่างเช่น ในหน้า listing ให้สร้าง nonce ใน session แล้วแนบไปกับลิ้งค์ด้วย เช่น ?id=15&nonce=randomstringXxX
ถ้า querystring nonce ไม่ตรงใน session ก็แจ้ง error ไปเลย. แล้ว nonce นี่ตามชื่อมันคือเรียกใช้ได้ครั้งเดียว ถ้าเข้าหน้านั้นแล้วหรือไปหน้าอื่นก็สร้างใหม่แล้วแนบไปในลิ้งค์.
หาอ่านเพิ่มเติมเกี่ยวกับ nonce เอามีตัวอย่างเพียบ
Date :
2020-05-03 13:43:08
By :
mr.v
เห็น URI เป็น /admin ใช้ GET ปกติเนี่ยล่ะครับมาตราฐานดี ไม่ encode ก็ทำ nonce ตามด้านบนแนะนำ
แต่เห็น tag มาเป็น Laravel ก็ต้องตอบอีกแบบว่าไปทำ Secue Token หรืออธิบายง่ายๆคือ นำ Token แนบมากับ URI และให้ Middleware หรือ Controller เปรียบเทียบก่อนเข้า Class ที่จะใช้งาน
ประวัติการแก้ไข 2020-05-03 15:49:24
Date :
2020-05-03 15:43:13
By :
Genesis™
ขอบคุณทุกๆคนที่เเนะนำนะครับ ผมมือใหม่ เลยไม่ค่อยเข้าใจอะไรลึกมาก
ตอนนี้ผมเปลี่ยนเเผนเป็นใช้ modal เเทนเเล้วครับ ส่วนเรื่องที่เเนะนำมาไว้ผมจะไปศึกษาเพิ่มดูครับ
Date :
2020-05-04 17:05:00
By :
1607845825935583
Model ไม่ใช่ทางออก เขียนไม่ดีสามารถยัด script ได้เช่นกันครับ
Date :
2020-05-04 17:32:23
By :
Genesis™
Load balance : Server 05