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