ส่วนนี้จะครอบคลุมถึงหัวข้อต่อไปนี้:
ความปลอดภัย
แหล่งข้อมูลจะทํางานได้ 1 ใน 2 โหมดการเข้าถึงดังนี้
-
ในโหมดการเข้าถึงแบบจํากัดซึ่งเป็นค่าเริ่มต้น แหล่งข้อมูลจะแสดงเฉพาะคําขอที่มาจากต้นทางโดเมนเดียวกับต้นทางของแหล่งข้อมูลเท่านั้น โหมดที่จํากัดจะช่วยป้องกันการโจมตีด้วยการปลอมแปลงคําขอแบบข้ามเว็บไซต์ (XSRF) จึงปลอดภัยกว่าโหมดการเข้าถึงที่ไม่จํากัด เนื่องจากไลบรารีแหล่งข้อมูลมีอินเทอร์เฟซสําหรับส่งคืนข้อมูลเท่านั้น และไม่ใช่สําหรับการเปลี่ยนแปลงสถานะหรือข้อมูลทางฝั่งเซิร์ฟเวอร์ มีเฉพาะการโจมตี XSRF ที่พยายามขโมยข้อมูลเท่านั้น คุณต้องใช้แหล่งข้อมูลร่วมกับการตรวจสอบสิทธิ์โดยใช้คุกกี้ เพื่อให้แหล่งข้อมูลมีความปลอดภัยในการพยายามขโมยข้อมูล วิธีการตรวจสอบสิทธิ์ผู้ใช้จะขึ้นอยู่กับสภาพแวดล้อมและการติดตั้งใช้งาน
-
ในโหมดการเข้าถึงแบบไม่จํากัด แหล่งข้อมูลจะแสดงคําขอทั้งหมดโดยไม่คํานึงถึงต้นทาง แหล่งข้อมูลที่เรียกใช้ในโหมดไม่จํากัดจะได้รับการปกป้องโดยการตรวจสอบสิทธิ์ที่ใช้คุกกี้ แต่โปรดทราบว่าแหล่งข้อมูลจะมีช่องโหว่ในการโจมตี XSRF ใช้โหมดแบบไม่จํากัดหากการแสดงภาพบนหน้าเว็บภายนอกโดเมนของแหล่งข้อมูลจําเป็นต้องเข้าถึงแหล่งข้อมูล หรือหากข้อมูลเป็นสาธารณสมบัติและไม่จําเป็นต้องได้รับการคุ้มครอง
คําขอการแสดงภาพสามารถระบุรูปแบบการตอบสนองของ JSON, CSV หรือ HTML รูปแบบการตอบกลับจะกําหนดรูปแบบที่แหล่งข้อมูลจะแสดงตารางข้อมูล เนื่องจากรูปแบบ CSV และ HTML ไม่มีช่องโหว่สําหรับการโจมตี XSRF คุณจึงเข้าถึงโดเมนอื่นๆ ได้แม้ในโหมดที่จํากัด
หากต้องการระบุโหมดแบบไม่จํากัด ให้ลบล้าง isRestrictedAccessMode()
ดังนี้
@Override protected boolean isRestrictedAccessMode() { return false; }
เพื่อความเรียบง่าย ตัวอย่างทั้งหมดที่ให้ไว้กับไลบรารีจะทํางานในโหมดการเข้าถึงที่ไม่จํากัด
ข้อผิดพลาดและคําเตือน
ในกรณีที่ต้องการหรือไม่ต้องการส่งคืนตารางข้อมูลที่ถูกต้อง ไลบรารีจะส่ง
DataSourceException
เช่น หากผู้ใช้ตรวจสอบสิทธิ์ไม่ได้ ไลบรารีจะส่งข้อยกเว้นเหล่านี้เมื่อข้อผิดพลาดทําให้สร้างตารางข้อมูลไม่ได้ คุณอาจต้องโยนข้อยกเว้นในสถานการณ์ที่ตอบสนองต่อแหล่งข้อมูลของคุณโดยเฉพาะ หากใช่ ให้สร้างประเภทข้อยกเว้นข้อผิดพลาดของคุณเองโดยรับค่าจากคลาส DataSourceException
นอกจากนี้ยังส่ง DataSourceException
คลาสดังกล่าวได้โดยตรง
คลาส DataSourceException
อยู่ในแพ็กเกจ base
ซึ่งมีพารามิเตอร์ต่อไปนี้
ReasonType
คุณจําเป็นต้องเลือกพารามิเตอร์นี้ ประเภทเหตุผลที่ใช้ได้จะกําหนดใน Enum ของReasonType
หากไม่มีประเภทเหตุผลที่ใช้ได้ คุณสามารถใช้Other
หรือInternal
MessageToUser
พารามิเตอร์นี้จะกําหนดข้อความของข้อความแสดงข้อผิดพลาด ในกรณีส่วนใหญ่ จะแสดงต่อผู้ใช้เป็นเคล็ดลับเครื่องมือ ดังนั้นคุณจึงไม่ควรใส่ข้อมูลทางเทคนิคหรือข้อมูลลับ
คุณใช้ชุดฟังก์ชันตัวช่วยใน datasource.DataSourceHelper
เพื่อจัดการข้อผิดพลาดได้ ในกรณีนี้ การเรียกใช้ทั้ง 2 ฟังก์ชันที่มีชื่อเดียวกันของ setErrorServletResponse
จะจัดการกับ DataSourceException
และแก้ไขข้อผิดพลาดในการตอบสนองของชุดข้อมูล หนึ่งในฟังก์ชันเหล่านี้ใช้คําขอแหล่งข้อมูล อีกฟังก์ชันหนึ่งใช้ HttpServlet request
และจะใช้ในกรณีที่สร้าง DataSourceRequest
ไม่สําเร็จ ตัวอย่างการติดตั้งใช้งานในการกําหนดความสามารถและโฟลว์เหตุการณ์
หากไม่สามารถแสดงผลตารางข้อมูล ไลบรารีจะแสดงข้อผิดพลาด หากสามารถแสดงผลตารางข้อมูลได้ แต่เกิดปัญหา ให้รายงาน ไลบรารีจะแสดงคําเตือนพร้อมตารางข้อมูลกลับมา ตัวอย่างเช่น ไลบรารีจะสร้างคําเตือนในสถานการณ์ต่อไปนี้
- หากการแสดงภาพการค้นหามี
LIMIT
ที่ทําให้ข้อมูลถูกตัด - หากการแสดงภาพการค้นหาขอรูปแบบการจัดรูปแบบที่ไม่ถูกต้องในวลี
FORMAT
หากต้องการเพิ่มคําเตือนของคุณเอง ให้สร้างอินสแตนซ์ base.Warning
แล้วเพิ่มลงในตารางข้อมูลโดยใช้เมธอด addWarning()
การบันทึก
ห้องสมุดนี้ใช้การบันทึกทั่วไปของ Jakarta การบันทึกทั่วไปของจาการ์ตาใช้กับระบบบันทึกทั่วไปที่คุณอาจมีอยู่แล้วได้ คุณอาจต้องเขียนอะแดปเตอร์หากระบบการบันทึกของคุณไม่เป็นมาตรฐาน ดูรายละเอียดเพิ่มเติมได้ที่หน้าแรกของการบันทึกข้อมูลที่พบได้ทั่วไปในจาการ์ตา
เมื่อมีการส่งข้อมูลข้อยกเว้นไปยังบันทึก วิธีเข้าถึงบันทึกจะขึ้นอยู่กับระบบการบันทึกที่คุณใช้