โอจีเอ็นแอล
| โอจีเอ็นแอล | |
|---|---|
| นักพัฒนา | เทคโนโลยี OGNL |
| เวอร์ชันเสถียร | 3.0.8 / 24 กันยายน 2556 |
| เขียนเป็น | ชวา |
| ระบบปฏิบัติการ | ข้ามแพลตฟอร์ม |
| แพลตฟอร์ม | เครื่องเสมือน Java |
| พิมพ์ | ภาษาแสดงออก (EL) |
| ใบอนุญาต | ใบอนุญาต BSD |
| เว็บไซต์ | http://commons.apache.org/ognl/ |
| ที่เก็บข้อมูล |
|
ภาษาการนำทางกราฟวัตถุ (OGNL) เป็น ภาษาแสดงนิพจน์ (EL)แบบโอเพนซอร์สสำหรับJavaซึ่งแม้จะใช้นิพจน์ที่เรียบง่ายกว่านิพจน์ทั้งหมดที่ภาษา Java รองรับ แต่ก็ช่วยให้สามารถรับและตั้งค่าคุณสมบัติ (ผ่านเมธอด setProperty และ getProperty ที่กำหนดไว้ในJavaBeans ) และเรียกใช้เมธอดของคลาส Java ได้ นอกจากนี้ยังช่วยให้การจัดการอาร์เรย์ง่ายขึ้นด้วย
มีจุดประสงค์เพื่อใช้ใน แอปพลิเคชัน Java EEโดยใช้taglibsเป็นภาษาสำหรับการแสดงออก
OGNL ถูกสร้างขึ้นโดย Luke Blanshard และ Drew Davidson จากOGNL Technology [ 1 ] การพัฒนา OGNL ได้รับการสานต่อโดยOpenSymphonyซึ่งปิดตัวลงในปี 2011 [ 2 ] ปัจจุบัน OGNL ได้รับการพัฒนาเป็นส่วนหนึ่งของApache Commons
เทคโนโลยี OGNL
OGNL เริ่มต้นจากการเป็นวิธีการสร้างแผนที่ความสัมพันธ์ระหว่างส่วนประกอบฝั่ง front-end และอ็อบเจ็กต์ฝั่ง back-end โดยใช้ชื่อคุณสมบัติ เมื่อความสัมพันธ์เหล่านี้มีคุณสมบัติมากขึ้น Drew Davidson จึงสร้างภาษาการเขียนโค้ดแบบคีย์-ค่า (KVCL) ขึ้นมา จากนั้น Luke Blanshard ได้นำ KVCL มาเขียนใหม่โดยใช้ANTLRและเริ่มใช้ชื่อ OGNL เทคโนโลยีนี้ได้รับการเขียนใหม่โดยใช้ Java Compiler Compiler ( JavaCC ) อีกครั้ง
OGNL ใช้การสะท้อนและการตรวจสอบภายใน ของ Java เพื่อจัดการกับกราฟวัตถุของแอปพลิเคชันในขณะรันไทม์ วิธีนี้ช่วยให้โปรแกรมสามารถเปลี่ยนแปลงพฤติกรรมตามสถานะของกราฟวัตถุแทนที่จะพึ่งพาการตั้งค่าในขณะคอมไพล์ นอกจากนี้ยังอนุญาตให้ทำการเปลี่ยนแปลงกราฟวัตถุได้ด้วย
โครงการที่ใช้ OGNL
- WebWork และStruts 2 ซึ่งเป็นรุ่นต่อจาก WebWork
- พรมทอ (4 และรุ่นก่อนหน้า)
- สปริงเว็บโฟลว์
- Apache Click
- MyBatis - เฟรมเวิร์กสำหรับแปลงข้อมูล SQL
- Thymeleaf - เครื่องมือสร้างเทมเพลต XML/XHTML/HTML5 ที่เขียนด้วยภาษาJava
- FreeMarker - เครื่องมือสร้างเทมเพลตด้วยภาษา Java
ปัญหาด้านความปลอดภัยของ OGNL
เนื่องจากความสามารถในการสร้างหรือเปลี่ยนแปลงโค้ดที่สามารถเรียกใช้งานได้ OGNL จึงสามารถทำให้เกิดช่องโหว่ด้านความปลอดภัยที่สำคัญในเฟรมเวิร์กใดๆ ที่ใช้เฟรมเวิร์กนี้ได้Apache Struts 2หลายเวอร์ชันมีความเสี่ยงต่อช่องโหว่ด้านความปลอดภัยของ OGNL [ 3 ] ณ เดือนตุลาคม 2560 เวอร์ชันที่แนะนำของ Struts 2 คือ 2.5.13 [ 4 ]ผู้ใช้ควรอัปเกรดเป็นเวอร์ชันล่าสุด เนื่องจากเวอร์ชันเก่ามีช่องโหว่ด้านความปลอดภัยที่ได้รับการบันทึกไว้แล้ว เช่น Struts 2 เวอร์ชัน 2.3.5 ถึง 2.3.31 และ 2.5 ถึง 2.5.10 อนุญาตให้ผู้โจมตีจากระยะไกลสามารถเรียกใช้โค้ดตามอำเภอใจได้ [ 5 ] Atlassian Confluence ได้รับผลกระทบจากปัญหาด้านความปลอดภัยของ OGNL ซ้ำแล้วซ้ำเล่า[ 6 ] [ 7 ]ซึ่งอนุญาตให้เรียกใช้โค้ดจากระยะไกลตามอำเภอใจได้ และกำหนดให้ผู้ใช้ทุกคนต้องอัปเดต
ดูเพิ่มเติม
ลิงก์ภายนอก
- สาขาการบำรุงรักษา OGNL 3.x
- หน้าแรกของ OGNL 4.x (Apache)
- ช่องโหว่การแทรกนิพจน์ OGNL CVE-2013-2134 ใน Apache Struts ถูกเก็บถาวรเมื่อวันที่ 9 พฤษภาคม 2021 ที่Wayback Machine