สมมติว่าฉันกำลังใช้sha1pass
เพื่อสร้างแฮชของรหัสผ่านที่ละเอียดอ่อนบางตัวในบรรทัดคำสั่ง ฉันสามารถใช้sha1pass mysecret
เพื่อสร้างแฮชของmysecret
แต่นี่มีข้อเสียที่mysecret
ตอนนี้อยู่ในประวัติศาสตร์ทุบตี มีวิธีการที่จะบรรลุเป้าหมายสุดท้ายของคำสั่งนี้ในขณะที่หลีกเลี่ยงการเปิดเผยmysecret
ในข้อความธรรมดาpasswd
หรือไม่โดยใช้คำสั่ง-style?
ฉันสนใจวิธีการทั่วไปในการทำเช่นนี้เพื่อส่งผ่านข้อมูลที่ละเอียดอ่อนไปยังคำสั่งใด ๆ วิธีการจะเปลี่ยนเมื่อข้อมูลที่ละเอียดอ่อนถูกส่งผ่านเป็นอาร์กิวเมนต์ (เช่นในsha1pass
) หรือใน STDIN ไปยังคำสั่งบางอย่าง
มีวิธีการทำสิ่งนี้หรือไม่?
แก้ไข : คำถามนี้ดึงดูดความสนใจจำนวนมากและมีคำตอบที่ดีหลายข้อเสนอด้านล่าง สรุปคือ:
- ตามคำตอบของ @ Kusalanandaเราจะไม่ต้องให้รหัสผ่านหรือความลับเป็นอาร์กิวเมนต์บรรทัดคำสั่งสำหรับยูทิลิตี้ สิ่งนี้มีความเสี่ยงในหลายวิธีตามที่อธิบายไว้โดยเขาและควรใช้ยูทิลิตี้ที่ออกแบบมาดีกว่าที่สามารถรับข้อมูลลับบน STDIN ได้
- คำตอบของ @ vfbsilvaอธิบายถึงวิธีการป้องกันไม่ให้สิ่งต่าง ๆ ถูกเก็บไว้ในประวัติทุบตี
- @ คำตอบของโจนาธานอธิบายวิธีการที่ดีอย่างสมบูรณ์แบบสำหรับการทำสิ่งนี้ให้สำเร็จตราบใดที่โปรแกรมสามารถใช้ข้อมูลลับของมันใน STDIN ดังนั้นฉันตัดสินใจยอมรับคำตอบนี้
sha1pass
ใน OP ของฉันเป็นเพียงตัวอย่าง แต่การสนทนาได้กำหนดว่ามีเครื่องมือที่ดีกว่าที่ใช้ข้อมูลบน STDIN - เป็น@R ..บันทึกในคำตอบของเขาการใช้คำสั่งขยายบนตัวแปรไม่ปลอดภัย
ดังนั้นโดยสรุปฉันยอมรับคำตอบของ @ Jonathanเนื่องจากเป็นทางออกที่ดีที่สุดเนื่องจากคุณมีโปรแกรมที่ออกแบบมาอย่างดีและมีความประพฤติดี แม้ว่าการส่งรหัสผ่านหรือความลับในฐานะที่เป็นอาร์กิวเมนต์บรรทัดคำสั่งจะไม่ปลอดภัยโดยพื้นฐาน
sha1pass mysecret
กำลังทำงานอยู่และรู้ว่าอะไรmysecret
คืออะไร (ใช้งานได้เพียงไม่กี่วินาทีในขณะที่โปรแกรมกำลังทำงานอยู่แน่นอน ... )