ฉันกำลังมองหา (1) ที่ปลอดภัยที่สุดและ (2) วิธีที่ง่ายที่สุดในการให้ผู้ใช้พิมพ์รหัสผ่านบน bash shell prompt และให้รหัสผ่านนั้นกลายเป็นส่วนหนึ่งของ stdin ไปยังโปรแกรม
นี่คือสิ่งที่ stdin จำเป็นต้องมีลักษณะ: {"username":"myname","password":"<my-password>"}
ซึ่ง<my-password>
เป็นสิ่งที่พิมพ์ลงในเชลล์พรอมต์ ถ้าฉันควบคุมโปรแกรม stdin ได้ฉันสามารถแก้ไขมันเพื่อขอรหัสผ่านอย่างปลอดภัยและใส่ลงไป แต่ downstream เป็นคำสั่งทั่วไปที่เป็นมาตรฐาน
ฉันได้พิจารณาและปฏิเสธวิธีการที่ใช้สิ่งต่อไปนี้:
- ผู้ใช้ที่พิมพ์รหัสผ่านลงในบรรทัดคำสั่ง: รหัสผ่านจะปรากฏบนหน้าจอและผู้ใช้ทุกคนสามารถมองเห็นได้ด้วย "ps"
- การแก้ไขตัวแปรเชลล์ในอาร์กิวเมนต์ของโปรแกรมภายนอก (เช่น
...$PASSWORD...
): รหัสผ่านจะยังคงปรากฏให้ผู้ใช้ทุกคนเห็นผ่าน "ps" - ตัวแปรสภาพแวดล้อม (ถ้าทิ้งไว้ในสภาพแวดล้อม): รหัสผ่านจะสามารถมองเห็นได้ในกระบวนการลูกทั้งหมด แม้กระบวนการที่น่าเชื่อถืออาจเปิดเผยรหัสผ่านหากพวกเขาถ่ายโอนข้อมูลหลักหรือตัวแปรสภาพแวดล้อมการถ่ายโอนข้อมูลเป็นส่วนหนึ่งของการวินิจฉัย
- รหัสผ่านที่อยู่ในไฟล์เป็นระยะเวลานานแม้ไฟล์ที่มีสิทธิ์ จำกัด : ผู้ใช้อาจเผลอเปิดเผยรหัสผ่านและผู้ใช้รูทอาจบังเอิญเห็นรหัสผ่าน
ฉันจะแก้ปัญหาปัจจุบันของฉันเป็นคำตอบด้านล่าง แต่จะเลือกคำตอบที่ดีกว่าถ้ามีคนมาด้วย ฉันคิดว่าควรจะมีบางสิ่งที่ง่ายกว่าหรืออาจมีบางคนเห็นข้อกังวลด้านความปลอดภัยที่ฉันพลาดไป