เว็บเซิร์ฟเวอร์ COBOL จุดประกายการถอดถอนเรื่องความปลอดภัยของหน่วยความจำและความแท้จริงของภาษาโปรแกรมมิ่ง

ทีมชุมชน BigGo
เว็บเซิร์ฟเวอร์ COBOL จุดประกายการถอดถอนเรื่องความปลอดภัยของหน่วยความจำและความแท้จริงของภาษาโปรแกรมมิ่ง

การพัฒนาเว็บเซิร์ฟเวอร์ใหม่ที่เขียนด้วย COBOL ทั้งหมดได้ดึงดูดความสนใจจากนักพัฒนา จุดประกายการถกเถียงเกี่ยวกับความปลอดภัยของหน่วยความจำ ความแท้จริงของภาษาโปรแกรมมิ่ง และการประยุกต์ใช้ภาษาเก่าในระบบสมัยใหม่ โปรเจกต์นี้ชื่อ Webbol แสดงให้เห็นว่า COBOL สามารถจัดการงานเครือข่ายร่วมสมัยได้ แต่ก็ได้ยกประเด็นคำถามสำคัญเกี่ยวกับความปลอดภัยและแนวปฏิบัติในการพัฒนา

ข้อจำกัดของเซิร์ฟเวอร์ Webbol :

  • การทำงานแบบเธรดเดียว (ประมวลผลคำขอทีละรายการ)
  • ไม่รองรับ SSL/TLS
  • ขนาดไฟล์สูงสุด: 64KB
  • รองรับเฉพาะการจัดระเบียบไฟล์แบบลำดับเชิงเส้น
  • ไม่มีระบบแคชหรือการบีบอัดข้อมูล
  • ไม่รองรับ range requests หรือการส่งเนื้อหาบางส่วน

ข้อกังวลด้านความปลอดภัยของหน่วยความจำปรากฏในการใช้งาน COBOL

ชุมชนได้ระบุช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้นในการพัฒนาเว็บเซิร์ฟเวอร์ COBOL อย่างรวดเร็ว นักพัฒนาสังเกตว่า COBOL แม้จะมีชื่อเสียงในด้านความเสถียร แต่ก็ไม่ได้มีความปลอดภัยของหน่วยความจำโดยธรรมชาติเหมือนภาษาสมัยใหม่อย่าง Rust ภาษานี้อนุญาตให้มีการปรับเปลี่ยนการอ้างอิงที่สามารถเข้าถึงหน่วยความจำนอกขอบเขตของโครงสร้างข้อมูลเดิม ซึ่งสร้างความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้น

ข้อกังวลเฉพาะอย่างหนึ่งที่เกิดขึ้นเกี่ยวกับความเป็นไปได้ของ buffer overflow ใน HTTP handler ที่การขาดช่องว่างระหว่าง method และ path อาจทำให้เกิดการล้นของ memory buffer ที่จัดสรรไว้ แม้ว่าคอมไพเลอร์ COBOL สมัยใหม่จะตรวจจับการละเมิดขอบเขตหลายอย่างระหว่างการคอมไพล์หรือรันไทม์ แต่ความยืดหยุ่นของภาษาในการเข้าถึงหน่วยความจำหมายความว่านักพัฒนาต้องระมัดระวังเกี่ยวกับแนวปฏิบัติด้านความปลอดภัย

Reference modification: ฟีเจอร์ของ COBOL ที่อนุญาตให้โปรแกรมเข้าถึงส่วนเฉพาะของฟิลด์ข้อมูล คล้ายกับการดำเนินการ substring ในภาษาอื่น

แนวปฏิบัติการโปรแกรมมิ่ง COBOL แท้จริงแบ่งความคิดเห็น

การถกเถียงที่น่าสนใจเกิดขึ้นรอบการใช้ fixed-format mode ของ COBOL ในโปรเจกต์ ซึ่งเลียนแบบสไตล์การโปรแกรมยุค punch card เดิม รูปแบบนี้ต้องการการจัดตำแหน่งคอลัมน์เฉพาะสำหรับองค์ประกอบโค้ดต่าง ๆ โดยใช้คอลัมน์ 1-6 สำหรับหมายเลขบรรทัด คอลัมน์ 7 สำหรับตัวบ่งชี้ และคอลัมน์ 12-72 สำหรับคำสั่งโปรแกรมจริง

หากคุณจะเขียน COBOL ในปี 2025 คุณก็ควรพยายามให้ได้ประสบการณ์ที่แท้จริงที่สุด!

อย่างไรก็ตาม นักพัฒนาบางคนสังเกตเห็นความไม่สอดคล้องกันที่ Makefile ของโปรเจกต์ใช้แฟล็ก -free สำหรับการคอมไพล์ ซึ่งแสดงถึงแนวทางผสมผสานต่อแบบแผนการจัดรูปแบบของ COBOL สิ่งนี้เน้นความตึงเครียดที่ดำเนินต่อไประหว่างการรักษาแนวปฏิบัติการโปรแกรมในอดีตและการปรับตัวเข้ากับขั้นตอนการพัฒนาสมัยใหม่

Fixed-format mode: สไตล์การโปรแกรม COBOL เดิมที่อิงตามข้อจำกัดของ punch card ต้องการการจัดตำแหน่งคอลัมน์เฉพาะสำหรับองค์ประกอบโค้ดต่าง ๆ

โครงสร้างคอลัมน์แบบ Fixed-Format ของ COBOL :

  • คอลัมน์ 1-6: หมายเลขบรรทัด
  • คอลัมน์ 7: ตัวอักษรบ่งชี้ (* สำหรับคอมเมนต์)
  • คอลัมน์ 8-11: เครื่องหมายแบ่งส่วนพิเศษ
  • คอลัมน์ 12-72: คำสั่ง COBOL
  • คอลัมน์ 73-80: คอมเมนต์/หมายเหตุของโปรแกรมเมอร์

การโปรแกรมตรรกะทางธุรกิจได้รับการตีความอย่างตรงไปตรงมา

การถกเถียงเปลี่ยนไปในทิศทางที่ขบขันเมื่อนักพัฒนาชี้ให้เห็นถึงความขัดแย้งของวัตถุประสงค์เดิมของ COBOL สมาชิกชุมชนคนหนึ่งสังเกตว่า ผู้คนมักจะบอกให้เลือกเครื่องมือที่ดีที่สุดสำหรับงาน แต่แล้วกลับปฏิเสธที่จะใช้ COBOL สำหรับปัญหา Common Business Oriented Language ซึ่งเป็นวัตถุประสงค์ที่แท้จริงที่ COBOL ถูกออกแบบมา

การสังเกตนี้จุดประกายการไตร่ตรองเกี่ยวกับวิธีที่การเลือกภาษาโปรแกรมมิ่งมักเกี่ยวข้องกับปัจจัยทางวัฒนธรรมและการรับรู้นอกเหนือจากคุณค่าทางเทคนิคล้วน ๆ การใส่คอมเมนต์อย่างครอบคลุมตลอดโค้ดเว็บเซิร์ฟเวอร์ COBOL ยังท้าทายสมมติฐานเกี่ยวกับโค้ดที่อธิบายตัวเอง โดยเฉพาะเมื่อผู้อ่านที่ตั้งใจไว้อาจไม่คุ้นเคยกับภาษาโปรแกรมมิ่ง

โปรเจกต์ Webbol ทำหน้าที่เป็นทั้งการสาธิตทางเทคนิคและจุดเริ่มต้นการสนทนาเกี่ยวกับบทบาทของภาษาเก่าในการคอมพิวเตอร์สมัยใหม่ แม้ว่าอาจจะยังไม่พร้อมสำหรับการใช้งานจริงเนื่องจากข้อจำกัดเช่น single-threading และขีดจำกัดขนาดไฟล์ 64KB แต่ก็แสดงให้เห็นสำเร็จว่าแม้แต่ภาษาโปรแกรมมิ่งที่มีอายุหลายทศวรรษก็สามารถปรับตัวเข้ากับความท้าทายการคอมพิวเตอร์ร่วมสมัยได้เมื่อใช้อย่างสร้างสรรค์

อ้างอิง: Webbol