การจัดการความปลอดภัย ข้อผิดพลาด คําเตือน และการบันทึก

ส่วนนี้จะครอบคลุมถึงหัวข้อต่อไปนี้:

ความปลอดภัย

แหล่งข้อมูลจะทํางานได้ 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 การบันทึกทั่วไปของจาการ์ตาใช้กับระบบบันทึกทั่วไปที่คุณอาจมีอยู่แล้วได้ คุณอาจต้องเขียนอะแดปเตอร์หากระบบการบันทึกของคุณไม่เป็นมาตรฐาน ดูรายละเอียดเพิ่มเติมได้ที่หน้าแรกของการบันทึกข้อมูลที่พบได้ทั่วไปในจาการ์ตา

เมื่อมีการส่งข้อมูลข้อยกเว้นไปยังบันทึก วิธีเข้าถึงบันทึกจะขึ้นอยู่กับระบบการบันทึกที่คุณใช้