ปัญหาเกี่ยวกับเซสชันและ Iframe

สวัสดีตอนบ่าย!

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

จนถึงตอนนี้ฉันมี iframe www.test.com?sid=34324vcsd3 อยู่ใน iframe ซึ่งฉันเชื่อว่าใช้งานได้ดี อย่างไรก็ตามเมื่อใดก็ตามที่พวกเขาสั่ง พวกเขาเปลี่ยนเส้นทางฉันไปที่ www.mysite.com/page ซึ่งไม่ได้เข้าสู่ระบบผ่าน Iframe ในปัจจุบัน แม้ว่าฉันจะเข้าสู่ระบบผ่านหน้าโฮสต์ แต่ฉันไม่ได้เข้าสู่ระบบผ่าน Iframe

ฉันคิดว่าฉันมีสองทางเลือก 1. ค้นหาวิธีแชร์เซสชันกับ Iframe

or

2 ค้นหาวิธีใช้ HTTP_Referer เพื่อดึง sessionID จากหน้า iframe ก่อนการถ่ายโอน

ตัวอย่างเช่น ฉันถูกส่งจาก test.com?sid=3d3er3e3 ไปยัง www.test.com/page โดยที่ test.com/page เรียก HTTP_referer ฉันสามารถรับ test.com?sid=3d3er3e3 ได้สำเร็จ แต่ฉันไม่แน่ใจว่าจะแยก SID ได้อย่างไร

เพื่อนๆจะแนะนำอะไรครับ? เป็นไปได้ไหมที่จะแชร์เซสชันกับ IFrame หรือมีวิธีดึง sessionID จากสตริง http_referer หรือไม่

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


person Robert Dickey    schedule 18.06.2013    source แหล่งที่มา
comment
ฉันไม่แนะนำให้ใช้ iframes   -  person    schedule 19.06.2013
comment
ขอบคุณสำหรับคำแนะนำ - แต่การกำจัด Iframe ไม่ใช่ทางเลือก มันเป็นแอปพลิเคชันที่เรียบง่ายมาก แต่การที่แอปพลิเคชันบุคคลที่สามเปลี่ยนวิธีการทำงานจะทำให้เราต้องเสียค่าใช้จ่ายมากเกินไป   -  person Robert Dickey    schedule 19.06.2013


คำตอบ (1)


จากสิ่งที่ฉันบอกได้ คุณกำลังพยายามส่งข้อมูลเซสชันผ่านตัวแปร GET แทนที่จะใช้คุกกี้ของเบราว์เซอร์ อ่านคู่มือ PHP เกี่ยวกับเซสชันที่นี่: http://php.net/manual/en/book.session.php

คำอธิบายง่ายๆ สั้นๆ เกี่ยวกับวิธีการทำงานของเซสชันก็คือ คุณสามารถทำได้ในหน้าเดียว:

<?
session_start();
$_SESSION['username'] = "foobar";
?>

... จากนั้นในหน้าอื่น:

<?
session_start();
echo $_SESSION['username'];
?>

...และหน้าที่สองจะแสดง "foobar" ไม่ว่าผู้ใช้จะมาจากไหน (ตราบใดที่พวกเขาเคยเยี่ยมชมหน้าแรกอย่างน้อยหนึ่งครั้งแล้ว)

person Chris    schedule 18.06.2013
comment
ขอบคุณสำหรับความช่วยเหลือ แต่จนถึงตอนนี้ปัญหาก็คือแม้จะเข้าสู่ระบบในหน้าโฮสต์ (หน้าที่มี Iframe) ตัวแปรเซสชันก็ต้องถ่ายโอนไปยังเว็บไซต์ผ่าน Iframe ตัวอย่างเช่น - หากฉันลงชื่อเข้าใช้ไซต์ของฉัน ไปที่หน้าบัญชีของฉันของเว็บไซต์ของฉัน จากนั้นลองเปิดหน้าบัญชีของฉันผ่าน Iframe เซสชันของฉันภายใน Iframe จะไม่มีอยู่จนกว่าฉันจะเข้าสู่ระบบอีกครั้ง - person Robert Dickey; 19.06.2013
comment
@RobertDickey ไม่ใช่แน่นอนว่าเป็นโดเมนเฉพาะด้วยเหตุผลด้านความปลอดภัยที่ชัดเจน - person ; 19.06.2013
comment
ดากอน ฉันรู้เรื่องนี้ดี นั่นคือเหตุผลว่าทำไมฉันถึงพยายามหาทางแก้ไข - person Robert Dickey; 19.06.2013
comment
@RobertDickey หากมีการแก้ไขไซต์ A อ่านไซต์ B คุกกี้ใครจะใช้มัน - person ; 19.06.2013
comment
บางทีฉันอาจจะเข้าใจผิด เมื่อคุณพูดว่า ฉันมีเว็บไซต์ที่อนุญาตให้คุณเข้าสู่ระบบและใช้แอปของบุคคลที่สามผ่าน Iframe คุณหมายถึงว่าพวกเขาเข้าสู่ระบบเว็บไซต์ของคุณหรือไปยังเว็บไซต์บุคคลที่สามใน iframe หรือไม่ หากพวกเขาเข้าสู่ระบบไซต์ของคุณ ก็ไม่มีเหตุผลใดที่ตัวแปรเซสชันที่คุณตั้งค่าระหว่างการเข้าสู่ระบบจะไม่ยังคงมีอยู่เมื่อ iframe กลับมาที่ไซต์ของคุณเมื่อสิ้นสุดกระบวนการ หากพวกเขาลงชื่อเข้าใช้เว็บไซต์บุคคลที่สาม คุณจะต้องพูดคุยกับบริษัทบุคคลที่สามเกี่ยวกับการส่งข้อมูลประจำตัวหากพวกเขายังไม่ได้ดำเนินการ - person Chris; 19.06.2013
comment
ความผิดของฉัน. พวกเขาเข้าสู่ระบบไซต์ของฉัน และเข้าถึง Iframe จากหน้าบนเว็บไซต์ของฉัน Iframe นั้นเป็นเพียงแอปพลิเคชันทั่วไปที่พวกเขาใช้ และเมื่อใช้งานแอปพลิเคชันเสร็จแล้ว พวกเขาเปลี่ยนเส้นทางจากแอปพลิเคชันไปยังเพจของเราในขณะที่ยังอยู่ใน iframe ปัญหาคือ - เมื่อพวกเขาถูกเปลี่ยนเส้นทางภายใน i frame นั้น ดูเหมือนว่าพวกเขาจะไม่ได้เข้าสู่ระบบอยู่ ตัวอย่างเช่น หากฉันเข้าสู่เว็บไซต์ของฉัน ให้ใช้แอปพลิเคชัน Iframe เมื่อหน้าเว็บใน iframe เสร็จแล้วก็จะถูกเปลี่ยนเส้นทางไปยังเว็บไซต์ของเรา . เมื่อเปลี่ยนเส้นทางไปยังเว็บไซต์ของเรา พวกเขาไม่มีเซสชั่นที่ใช้งานอยู่และถูกขอให้เข้าสู่ระบบ - person Robert Dickey; 19.06.2013
comment
พวกเขาควรจะเข้าสู่ระบบภายใน iframe แล้ว ไม่ควรเกี่ยวข้องกับหน้าที่พวกเขาดูใน iframe ก่อนที่จะกลับมาที่ไซต์ของคุณ หากคุณสร้าง iframe อื่นที่ไปที่หน้าปัญหาโดยตรง (หน้าบนไซต์ของคุณที่ผู้เยี่ยมชมเข้าถึงภายใน iframe) โดยไม่ต้องไปที่บุคคลที่สาม คุณยังคงประสบปัญหาเดิมอยู่ใช่หรือไม่ ลองโพสต์รหัสที่คุณใช้ในการเข้าสู่ระบบและรหัสที่คุณใช้ในการตรวจสอบว่าพวกเขาเข้าสู่ระบบหรือไม่ - person Chris; 19.06.2013
comment
คุณพูดถูก มันทำงานอย่างถูกต้องเมื่อฉันเปิดเพจใน iframe ให้ฉันโพสต์รหัสของฉัน - person Robert Dickey; 19.06.2013