แอปพลิเคชันบนเดสก์ท็อปสื่อสารกับเซิร์ฟเวอร์ระยะไกลก่อนเว็บเซอร์อย่างไร


11

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

ก่อนเว็บเซอร์แอปพลิเคชันฐานข้อมูลทำสิ่งนี้ได้อย่างไร ข้อมูล db ที่สำคัญทั้งหมดถูกส่งผ่านไปยังการติดตั้งแอพเดสก์ท็อปหรือไม่ ถ้าเป็นเช่นนั้นโปรแกรมเมอร์ทำหน้าที่จัดการด้านความปลอดภัยอย่างไร? หรือโปรแกรมเมอร์ใช้บางอย่างที่คล้ายกับ webservices


5
มีสิ่งที่ตลกสำหรับการเรียกโพรซีเดอร์แบบรีโมตเช่น DCOM (Distributed COM), CORBA, Java RMI ... ฉันไม่เคยเข้าใจสิ่งใดเลยในขณะที่ขอข้อมูลบางอย่างผ่านทาง HTTP ทำให้รู้สึกได้ทันที ฉันเดาว่าการใช้เว็บเบราว์เซอร์ทุกวันทำให้ webservices ง่ายกว่าที่จะ grok :-)
marcus

3
@marcus: อาจเป็นเพราะ HTTP มีการตอบสนองคำขออยู่ในตัวในขณะที่ "บางโพรโทคอลผ่านซ็อกเก็ต" ส่งผลให้ทุกคนคิดค้นวงล้อที่มีรูปร่างแตกต่างกันเล็กน้อย
Steve Jessop

คำตอบ:


11

ขึ้นอยู่กับสิ่งที่คุณเรียกบริการเว็บ

ก่อน WSDL และ REST ยังคงมี HTTP ดังนั้นโดยพื้นฐานแล้วทุกสิ่งที่คุณสามารถทำได้ตอนนี้สามารถทำได้มาก่อนเช่นกัน

มีความไม่สม่ำเสมอ (ซึ่งเป็นสาเหตุที่ WSDL และ REST ถูกสร้างขึ้นในตอนแรก) แต่มันก็ให้ความลับของข้อมูลและความปลอดภัยในระดับเดียวกับที่คุณกำลังพูดถึง

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


17

กลับมาเมื่อเรามีไม้และก้อนหิน

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

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

จากช่วงแรก ๆ ของอินเทอร์เน็ตมีวิธีที่เครื่องจะสื่อสารข้ามมันได้ บริการเว็บเป็นเพียงรสชาติล่าสุดของสัปดาห์


5
"ไม่มีอะไรที่มีมนต์ขลังเป็นที่เกี่ยวกับที่มิทั้งสองฝ่ายก็ต้องยอมรับในสิ่งที่ทุกไบต์เฉลี่ย." และendianness :)
HJK

2
@hjk นั้นง่าย: little-endian นั้นเหนือกว่าตัวเลือกอื่น ๆ :-)
Mark

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

2
@SteveJessop: คุณผิด " มันเป็นชุดของหลอด "
Deduplicator

3

เพียงเพื่อล้างแนวคิดบางอย่างก่อน ...

ฉันเชื่อว่าการเข้าถึงข้อมูลผ่านเว็บเซอร์วิซเป็นการรักษาความปลอดภัยฉันไม่จำเป็นต้องผ่านชื่อผู้ใช้และรหัสผ่านของเซิร์ฟเวอร์ db เป็นต้น

ฉันคิดว่าคุณกำลังสับสนแนวคิดของ (1) Transport Layer Security (TLS)และ (2) การควบคุมการเข้าถึงในคำสั่งด้านบน ... ไม่ว่าจะต้องระบุชื่อผู้ใช้และรหัสผ่านหรือไม่ไม่เกี่ยวข้องกับบริการเว็บหรือไม่ จัดทำผ่าน (1) ช่องทางการเข้ารหัสและ (2) การตรวจสอบ (เช่นรหัส API)

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

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

  • ไม่ว่าจะเป็นโปรโตคอลการสื่อสารของคุณ(ยืมเล็กน้อยจากคำตอบของ @ RobertHarvey) รองรับการส่งข้อมูลที่เข้ารหัสหรือไม่
  • ข้อความน้ำหนักบรรทุกโครงสร้างที่ถูกส่งระหว่างเซิร์ฟเวอร์และไคลเอ็นต์
    • ไคลเอนต์แจ้งให้เซิร์ฟเวอร์เพียงแค่ยืนยันที่อยู่ที่อยู่อาศัยของผู้ใช้รายนี้หรือเชื่อมต่อกับฐานข้อมูลที่ IP X.X.X.Xด้วยชื่อผู้ใช้และรหัสผ่านแล้วเรียกใช้แบบสอบถามINSERT INTO user_address ...หรือไม่
  • วิธีที่เซิร์ฟเวอร์จัดการการเชื่อมต่อฐานข้อมูล (ซึ่งแยกได้จากไคลเอนต์ดูย่อหน้าแรก)

สำหรับข้อมูลเพิ่มเติม:

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