วิธีสร้างเว็บไซต์ให้ปลอดภัยด้วย https


87

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

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

หากคุณพูดว่า https ฉันมีคำถาม:

  1. ฉันควรทำอย่างไรเพื่อเตรียมเว็บไซต์สำหรับ https (ฉันจำเป็นต้องแก้ไขโค้ด / Config หรือไม่)
  2. SSL และ https เป็นหนึ่งเดียวกัน ...
  3. ฉันจำเป็นต้องสมัครกับใครเพื่อขอใบอนุญาตหรืออะไรบางอย่าง
  4. ฉันต้องทำให้หน้าทั้งหมดของฉันปลอดภัยหรือเฉพาะหน้าเข้าสู่ระบบ ...

ฉันกำลังค้นหาคำตอบทางอินเทอร์เน็ต แต่ฉันไม่สามารถรับประเด็นเหล่านี้ได้ทั้งหมด ... เอกสารไวท์เปเปอร์หรือข้อมูลอ้างอิงอื่น ๆ ก็จะเป็นประโยชน์เช่นกัน ...

อย่าลังเลที่จะถามในกรณีที่คุณต้องการข้อมูลเพิ่มเติม

ขอบคุณ

  • ราชา

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

3
ข้อควรระวังเพิ่มเติมขึ้นอยู่กับว่าข้อมูลนั้นเป็นความลับเพียงใด (เช่นข้อมูลส่วนบุคคลอาจอยู่ภายใต้กฎหมายของรัฐบาลกลาง) และความสัมพันธ์และสัญญาใดที่คุณมีกับ บริษัท คุณอาจต้องคิดว่าคุณจะต้องรับผิดหรือไม่หาก มีคนแฮ็กไซต์
huynhjl

เมื่อคุณติดตั้งใบรับรองบนเซิร์ฟเวอร์ของคุณแล้วหากต้องการเพิ่ม https ลงในเว็บไซต์ของคุณใน IIS สิ่งที่คุณต้องทำคือไปที่ไซต์และ "แก้ไขการเชื่อมโยง" เลือก https และเลือกใบรับรอง
bgmCoder

คำตอบ:


49

ฉันควรทำอย่างไรเพื่อเตรียมเว็บไซต์สำหรับ https (ฉันจำเป็นต้องแก้ไขโค้ด / Config หรือไม่)

คุณควรคำนึงถึงแนวทางปฏิบัติที่ดีที่สุดสำหรับการเข้ารหัสอย่างปลอดภัย (นี่คือบทนำที่ดี: http://www.owasp.org/index.php/Secure_Coding_Principles ) มิฉะนั้นสิ่งที่คุณต้องมีคือการตั้งค่าใบรับรอง SSL อย่างถูกต้อง

SSL และ https เป็นหนึ่งเดียวกัน ..

สวยมากใช่

ฉันจำเป็นต้องสมัครกับใครเพื่อขอใบอนุญาตหรืออะไรบางอย่าง

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

ฉันต้องทำให้หน้าทั้งหมดของฉันปลอดภัยหรือเฉพาะหน้าเข้าสู่ระบบ ..

ใช้ HTTPS สำหรับทุกสิ่งไม่ใช่แค่การเข้าสู่ระบบครั้งแรกของผู้ใช้ มันจะไม่เกินค่าใช้จ่ายมากเกินไปและจะหมายถึงข้อมูลที่ผู้ใช้ส่ง / รับจากแอปพลิเคชันที่โฮสต์จากระยะไกลของคุณจะไม่สามารถอ่านได้โดยบุคคลภายนอกหากถูกดักฟัง แม้แต่ Gmail ก็เปิดใช้ HTTPS ตามค่าเริ่มต้นแล้ว


1
นอกจากนี้คุณยังสามารถรับใบรับรอง TLS ได้ฟรีเช่นจากLet's เข้ารหัส
1615903

8

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

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

ใช้การเชื่อมต่อที่ปลอดภัยตลอดทาง

ฉันต้องแก้ไขรหัส / กำหนดค่าหรือไม่

ใช่. ดีอาจจะไม่ คุณอาจต้องการให้ผู้เชี่ยวชาญทำสิ่งนี้ให้คุณ

SSL และ https เป็นหนึ่งเดียวกัน ...

ส่วนใหญ่ใช่ คนมักจะอ้างถึงสิ่งเหล่านั้นว่าเป็นสิ่งเดียวกัน

ฉันจำเป็นต้องสมัครกับใครเพื่อขอใบอนุญาตหรืออะไรบางอย่าง

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

ฉันต้องทำให้หน้าทั้งหมดของฉันปลอดภัยหรือเฉพาะหน้าเข้าสู่ระบบ ...

ใช้ https ตลอด โดยปกติประสิทธิภาพจะไม่เป็นปัญหาหากไซต์มีไว้สำหรับผู้ใช้ภายใน

ฉันกำลังค้นหาคำตอบทางอินเทอร์เน็ต แต่ฉันไม่สามารถหาประเด็นเหล่านี้ได้ทั้งหมด ... เอกสารไวท์เปเปอร์หรือข้อมูลอ้างอิงอื่น ๆ ก็จะเป็นประโยชน์เช่นกัน ...

เริ่มต้นที่นี่สำหรับคำแนะนำบางส่วน: http://www.owasp.org/index.php/Category:OWASP_Guide_Project

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


+1 สำหรับคำแนะนำที่ดีเกี่ยวกับการรักษาความปลอดภัยทุกทางและการป้องกันภัยพิบัติโดยถามว่าข้อมูลเป็นความลับมากหรือไม่และแนะนำว่าอย่าวางออนไลน์
BlueTrin

7

ฉันคิดว่าคุณกำลังสับสนกับการรับรองความถูกต้องไซต์และ SSL

หากคุณต้องการทำให้ไซต์ของคุณเป็น SSL คุณจะต้องติดตั้งใบรับรอง SSL ในเว็บเซิร์ฟเวอร์ของคุณ คุณสามารถซื้อใบรับรองด้วยตัวคุณเองได้จากที่ใดที่หนึ่งเช่นไซแมนเทคเป็นต้นใบรับรองจะมีคู่คีย์สาธารณะ / ส่วนตัวของคุณพร้อมกับสิ่งอื่น ๆ

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

ดูข้อมูลเพิ่มเติม -> http://en.wikipedia.org/wiki/Transport_Layer_Security


3

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

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

ฉันควรทำอย่างไรเพื่อเตรียมเว็บไซต์สำหรับ https (ฉันจำเป็นต้องแก้ไขโค้ด / Config หรือไม่)

ในการเปิดใช้SSL (Secure Sockets Layer)สำหรับเว็บไซต์ของคุณคุณจะต้องตั้งค่าใบรับรองรหัสหรือการกำหนดค่าจะไม่เปลี่ยนแปลง

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

SSL และ https เป็นหนึ่งเดียวกัน ...

ไม่ตรง แต่จับมือกัน! SSL ช่วยให้มั่นใจได้ว่าข้อมูลถูกเข้ารหัสและถอดรหัสไปมาในขณะที่คุณกำลังดูเว็บไซต์httpsคือ URI ที่จำเป็นในการเข้าถึงเว็บไซต์ที่ปลอดภัย คุณจะสังเกตเห็นเมื่อคุณพยายามเข้าถึงhttp://secure.mydomain.comแสดงข้อความแสดงข้อผิดพลาด

ฉันจำเป็นต้องสมัครกับใครเพื่อขอใบอนุญาตหรืออะไรบางอย่าง

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

ฉันต้องทำให้หน้าทั้งหมดของฉันปลอดภัยหรือเฉพาะหน้าเข้าสู่ระบบ ...

เมื่อใบรับรองของคุณเปิดใช้งานสำหรับmydomain.comทุกหน้าที่อยู่ภายใต้*.mydomain.comจะได้รับการรักษาความปลอดภัย


1

4. ฉันต้องทำให้หน้าทั้งหมดของฉันปลอดภัยหรือเฉพาะหน้าเข้าสู่ระบบ ...

เพียงแค่ให้หน้าล็อกอินอยู่ใต้ https

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


3
การให้บริการเพียงบางส่วนของไซต์ของคุณภายใต้ TLS นั้นไม่ปลอดภัย ผู้โจมตีที่ใช้งานอยู่สามารถใช้ SSLStrip และเข้าถึงหน้าที่มีการป้องกันตามที่คาดคะเน
Tobu

1

@balalakshmi กล่าวถึงการตั้งค่าการตรวจสอบสิทธิ์ที่ถูกต้อง การพิสูจน์ตัวตนเป็นเพียงครึ่งหนึ่งของปัญหาอีกครึ่งหนึ่งคือการอนุญาต

หากคุณกำลังใช้ Forms Authentication และการควบคุมมาตรฐานเช่น <asp:Login>มีสองสามสิ่งที่คุณต้องทำเพื่อให้แน่ใจว่าเฉพาะผู้ใช้ที่ได้รับการรับรองความถูกต้องของคุณเท่านั้นที่สามารถเข้าถึงหน้าที่ปลอดภัยได้

ในweb.configภายใต้<system.web>ส่วนคุณจะต้องปิดการใช้งานการเข้าถึงที่ไม่ระบุชื่อโดยค่าเริ่มต้น:

<authorization>
 <deny users="?" />
</authorization>

หน้าใด ๆ ที่จะเข้าถึงโดยไม่ระบุตัวตน (เช่นหน้า Login.aspx เอง) จะต้องมีการลบล้างที่อนุญาตให้เข้าถึงโดยไม่ระบุชื่อ นี้ต้องมี<location>องค์ประกอบและจะต้องอยู่ที่<configuration>ระดับ ( นอก<system.web>ส่วน) เช่นนี้

<!-- Anonymous files -->
<location path="Login.aspx">
 <system.web>
  <authorization>
   <allow users="*" />
  </authorization>
 </system.web>
</location>

โปรดทราบว่าคุณจะต้องอนุญาตให้เข้าถึงสไตล์ชีตหรือสคริปต์แบบไม่ระบุชื่อที่ใช้โดยเพจที่ไม่ระบุชื่อ:

<!-- Anonymous folders -->
<location path="styles">
 <system.web>
  <authorization>
   <allow users="*" />
  </authorization>
 </system.web>
</location>

โปรดทราบว่าpathแอตทริบิวต์ของตำแหน่งนั้นสัมพันธ์กับweb.configโฟลเดอร์และไม่มี~/คำนำหน้าซึ่งแตกต่างจากแอตทริบิวต์การกำหนดค่าประเภทพา ธ อื่น ๆ ส่วนใหญ่


-2

ลองสร้างไดเร็กทอรีสำหรับบูตใน PHP เช่นเดียวกับใน

<?PHP
$ip = $_SERVER['REMOTE_ADDR'];
$privacy = ['BOOTSTRAP_CONFIG'];
$shell   = ['BOOTSTRAP_OUTPUT'];
enter code here
if $ip == $privacy {
function $privacy int $ip = "https://";
} endif {
echo $shell
}
?>

นั่นคือส่วนใหญ่!


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