การจัดเก็บในพื้นที่ปลอดภัยแค่ไหน?


33

คำถามบอกว่ามันทั้งหมดจริงๆ ฉันต้องการให้บริการ แต่ฉันไม่ต้องการเก็บข้อมูลใด ๆ ด้วยตัวเองในฐานข้อมูล จากข่าวล่าสุดเกี่ยวกับการแฮ็กข้อมูล ฯลฯ ดูเหมือนว่าฉันจะดีกว่าที่ลูกค้าสามารถควบคุมข้อมูลได้อย่างสมบูรณ์

ปัญหาคือข้อมูลที่เก็บไว้อาจอ่อนไหว สิ่งที่ฉันจะทำคือ ... เมื่อลูกค้าเยี่ยมชมเว็บไซต์จะมีคำถามถามว่า 'คุณใช้คอมพิวเตอร์ส่วนบุคคลหรือคอมพิวเตอร์สาธารณะ' หากพวกเขาอยู่ในคอมพิวเตอร์สาธารณะไซต์จะปฏิเสธการเข้าถึง

หากพวกเขาอยู่บนคอมพิวเตอร์ส่วนบุคคลมันจะพร้อมท์ให้พวกเขาตั้งรหัสผ่าน ข้อมูลทั้งหมดของพวกเขาจะถูกเข้ารหัสด้วยรหัสผ่านนี้ ตอนนี้เห็นได้ชัดว่ามันไม่ปลอดภัยเกินไป วิธีการเข้ารหัสจะอยู่ใน JavaScript และรหัสผ่านเป็นข้อความธรรมดาดังนั้นฉันคิดว่ามันเป็นไปได้สำหรับผู้ใช้ที่มีความชำนาญในการค้นหารหัสผ่านใน localStorage และเข้าถึงข้อมูล

ฉันรู้สึกว่านี่ไม่ใช่ปัญหามากเกินไป หากคุณใช้คอมพิวเตอร์ส่วนบุคคลโอกาสในการเกิดเหตุการณ์นี้จะอยู่ในระยะไกลเนื่องจาก ... คนอื่นจะต้องเข้าถึงบัญชีผู้ใช้เฉพาะของพวกเขาบนคอมพิวเตอร์คนอื่นจะต้องรู้เกี่ยวกับเว็บไซต์ ... คนอื่นจะต้องเข้าใจ localStorage และวิธีการเข้าถึง ข้อมูลที่ละเอียดอ่อนไม่ใช่สิ่งใดที่จะลดความเป็นตัวตนของพวกเขาหรือสิ่งอื่นใด เพียงบันทึกสิ่งที่คนส่วนใหญ่ไม่ต้องการเผยแพร่ต่อสาธารณะ

ดังนั้นคำถามคือ localStorage ปลอดภัยเพียงพอหรือไม่

คำถามเพิ่มเติม .. การล้างข้อมูลในพื้นที่เก็บข้อมูลทำได้อย่างไร ฉันไม่ต้องการให้ผู้ใช้ลบข้อมูลโดยไม่ตั้งใจ

สุดท้าย - มันคุ้มค่าในการเข้ารหัส / ถอดรหัสข้อมูลของพวกเขาราวกับว่าคุณมีรหัสผ่านที่คุณสามารถเข้าถึงเว็บไซต์ ..


2
JavaScript ฝั่งไคลเอ็นต์ไม่ใช่ตำแหน่งที่ดีที่สุดสำหรับการเข้ารหัส ผู้ใช้ที่มีน้ำใจสามารถดูรหัสและแฮ็กเข้าไปในการเข้ารหัสของคุณและทำให้มันไม่ได้ทำอะไรและมันก็แค่ยอมรับรหัสผ่านที่เข้ารหัส

คำตอบ:


10

แล้วจะไม่เก็บรหัสผ่านเลยแม้แต่ในที่จัดเก็บในตัวเครื่องล่ะ คุณสามารถใช้ฟังก์ชั่นการหากุญแจเพื่อรับรหัสจากรหัสผ่าน ด้วยเกลือและจำนวนที่เหมาะสมของการทำซ้ำนี้ควรมีความปลอดภัยอย่างเหมาะสม


มันจะปลอดภัยมากขึ้นถ้ารหัสผ่านถูกส่งไปยัง PHP ซึ่งสร้างรหัสที่อยู่เบื้องหลัง?
JasonS

ไม่ได้รหัสผ่านจะถูกกำหนดให้กับลูกค้าในตอนแรก โดยการส่งไปยังเซิร์ฟเวอร์คุณเพิ่มความเสี่ยงที่จะถูกขโมย การทำการสืบทอดคีย์ใน JS เก็บความลับบนไคลเอ็นต์ ในทุกกรณีคุณควรลืม PW หลังจากนั้นไม่นาน แต่ฉันคิดว่ามันยังไร้ประโยชน์ - ดูคำตอบของฉัน

แฮกเกอร์หลายคนฉลาดมาก ... ใช้ Lib bCrypt
Eddie B

2

การใช้ JavaScript ที่มีที่จัดเก็บในตัวเครื่องมีความปลอดภัยสูงสุดเท่ากับ (เซิร์ฟเวอร์ของคุณพร้อมการเชื่อมต่อระหว่างเบราว์เซอร์และเซิร์ฟเวอร์)

หากใครจัดการแก้ไขเซิร์ฟเวอร์ของคุณและให้บริการไฟล์ JS ที่แตกต่างกันหรือแก้ไข (ในขณะที่ถูกส่ง) ไฟล์ JS ที่ส่งจากเซิร์ฟเวอร์ไปยังลูกค้าพวกเขาสามารถทำอะไรกับข้อมูลที่พวกเขาต้องการ

นอกจากนี้: เนื่องจากข้อมูลอยู่ในไคลเอนต์คุณจึงไม่สามารถทำอะไรเพื่อปกป้องข้อมูลได้ บนเซิร์ฟเวอร์ธรรมดาคุณสามารถ จำกัด ความถี่ในการเข้าถึง (ตัวอย่างสำหรับรหัสผ่านระยะไกลที่ปลอดภัย: เพียง 1 รหัสอ่านภายใน 10 นาที) ทั้งหมดนี้ไม่มีประโยชน์หากข้อมูลอยู่ในไคลเอนต์และรหัสทั้งหมดที่ทำงานกับข้อมูลสามารถจัดการได้โดยผู้โจมตี

ท้ายที่สุดคุณต้องมีเว็บแอพพลิเคชั่นที่ปลอดภัย! ทำไมต้องทำสิ่งต่าง ๆ บนเซิร์ฟเวอร์ที่ปลอดภัย (หวังว่า) หากไม่ใช่เพราะเหตุใดไม่ได้ใช้โปรแกรมในเครื่องที่ติดตั้งบนไคลเอนต์


คุณไม่คิดว่าปัญหาด้านความปลอดภัยที่สำคัญคือถ้ามีคนอื่นใช้หรือขโมยอุปกรณ์หรือไม่

2

วิธีการเกี่ยวกับการรับรหัสจากเซิร์ฟเวอร์ที่ใช้ในการถอดรหัสข้อมูล localStorage

มันสามารถทำงานได้เช่นนี้:

  • เมื่อสร้างเซสชันเซิร์ฟเวอร์จะส่งคืนคีย์
  • คีย์นั้นใช้ในการเข้ารหัส / ถอดรหัสข้อมูลใน localStorage
  • เมื่อผู้ใช้ออกจากหน้านี้คีย์จะหายไปทำให้ผู้อื่นไม่สามารถอ่านสิ่งที่อยู่ใน localStorage

สิ่งนี้ควรอนุญาตการเข้าถึงในขณะที่ผู้ใช้มีเซสชันที่กำหนดไว้แล้วเท่านั้น


3
สิ่งนี้จะไม่สามารถเข้าถึงข้อมูลออฟไลน์ได้ (ซึ่งดูเหมือนจะเป็นกรณีการใช้งานหลักสำหรับ localStorage) หากต้องการใช้วิธีนี้แบบออฟไลน์คุณจะต้องเก็บรหัสไว้
Timothy Lee Russell

0

โดยทั่วไปแล้วการลบที่เก็บข้อมูลในเครื่องนั้นไม่ยาก แต่ก็ขึ้นอยู่กับเบราว์เซอร์ คุณจำเป็นต้องใช้เครื่องมือสำหรับนักพัฒนาเบราว์เซอร์ (firebug, webkit stuff, ฯลฯ )

คิดเหมือนคุณคิดว่าคุกกี้ คุณไม่ควรเก็บข้อมูลที่ละเอียดอ่อนไว้ในที่จัดเก็บในตัวเครื่อง รหัสผ่านหมายเลขบัตรเครดิตอะไรก็ตาม

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


0

สองประเด็น:

  1. หากคุณเก็บรหัสผ่านแบบข้อความธรรมดาจากนั้นวางใจในความจริงที่ไม่น่าจะพบนั่นเป็นเพียงความปลอดภัยผ่านความสับสน เพียงแค่จัดเก็บข้อมูลในข้อความธรรมดาและพึ่งพาสมมติฐานเดียวกัน (ยังไม่ปลอดภัย แต่ไม่มีความปลอดภัยที่ผิดพลาด)

  2. บนเบราว์เซอร์ส่วนใหญ่ถ้าคนล้างแคชพวกเขาจะลบเนื้อหา localStorage ของพวกเขาเช่นกัน ผู้คนไม่คาดหวังว่าจะสูญเสียข้อมูลสำคัญเมื่อพวกเขาล้างประวัติและแคช

ฉันคิดว่าคุณมีความตั้งใจที่จะจัดเก็บ localStorage ไว้มากเกินไป หากคุณต้องการที่จะใช้ฐานข้อมูลท้องถิ่นที่เล่นกันได้ดีกับ webapps คุณสามารถใช้เวลาดูไปCouchDB 's couchapps

แต่อย่าเก็บรหัสผ่าน


0

คุณสามารถใช้javascrypt ถามผู้ใช้สำหรับรหัสผ่านที่จะกลายเป็นคีย์การเข้ารหัส / ถอดรหัส

คุณไม่จำเป็นต้องเก็บรหัสผ่าน แต่ขอรหัสผ่านทุกครั้งที่ผู้ใช้เปิดหน้า
อาจจะเก็บมันถ้าผู้ใช้ต้องการและตอนนี้ความหมาย

แต่จากนั้นเพื่อเข้าร่วมแสดงความคิดเห็นของ stivlo เกี่ยวกับ:

  1. การเข้าถึงอุปกรณ์หลายรายการ
  2. การสำรองข้อมูล
  3. ลืมรหัสผ่าน
  4. ล้างแคชง่ายเกินไป

ฉันคิดว่าคุณควรพิจารณาจุดเริ่มต้นของการให้เหตุผล หลีกเลี่ยงเมฆเพียงเพราะเหตุการณ์ล่าสุดและน่าตื่นเต้นเป็นบทสรุปอย่างรวดเร็ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.