คอมพิวเตอร์, ซอฟต์แวร์
PHP ตัวแปรทั่วโลกในการทำงาน สร้างตัวแปรทั่วโลกใน PHP
การสร้างเว็บไซต์เต็มรูปแบบซึ่งมีการทำงานในวงกว้างที่คุณจำเป็นต้องรู้มาก แต่สิ่งที่สามารถทำให้เขาที่ไม่ซ้ำกันอย่างแท้จริง - มันเป็น PHP ตัวแปรระดับโลกในภาษาการเขียนโปรแกรมที่ไม่ได้ใช้บ่อยมาก แต่บางครั้งที่จะรู้วิธีการทำงานบางครั้งก็เป็นสิ่งที่จำเป็น นั่นคือการศึกษาว่ามันคืออะไรและวิธีการทำงานเราจะไปทำในบทความนี้
ขอบเขต
โดยค่าเริ่มต้นที่พวกเขาจะถูก จำกัด ขอบเขตการทำงานของท้องถิ่น และวิธีการที่จะทำให้ตัวแปรไฟล์ที่เห็นในขอบเขตที่มากขึ้นและสามารถใช้งานหรือไม่ ด้วยเหตุนี้และมีการระบุไว้ในตัวแปร PHP
คำว่า "โลก"
หลังจากการดำเนินการดังกล่าวบ่งชี้ข้อมูลที่จะสามารถทำงานกับไฟล์ใด ๆ ถ้าที่ไหนสักแห่งที่มีการอ้างอิงกับตัวแปรนี้โปรแกรมมักจะให้ความสนใจในรุ่นทั่วโลก
ทำไมเช่นภาษาแปลก ๆ ? ความจริงที่ว่าในเวลาเดียวกันอาจจะมีรุ่นท้องถิ่น แต่พวกเขาจะสามารถใช้ได้เฉพาะสำหรับไฟล์เหล่านั้นที่ประกาศ และสำหรับส่วนที่เหลือทั้งหมดจะทำหน้าที่ตัวแปรทั่วโลกเรียน PHP ดังนั้นคุณจะต้องระมัดระวัง และนั่นหมายความว่าไม่ต้องสงสัยเลยว่านี่คือตัวอย่างของสิ่งที่พวกเขามีลักษณะเหมือน: ทั่วโลก
เพราะถ้าหนึ่งไฟล์จะมีการเข้าถึงจำนวนของตัวแปรก็จะทำให้พวกเขาไปสู่ความขัดแย้ง แต่เราไม่สามารถพูดได้อย่างแน่นอน - ประเทศหรือทั่วโลกตัวแปรอ่านหรือล้มเหลวโดยสิ้นเชิง ดังนั้นถ้ามันคือการลงทะเบียนในการทำงานก็จะไม่มีปัญหา แต่การใช้ตัวแปรสำหรับเส้นขอบของมันจะเป็นปัญหา ดังนั้นโครงสร้างของการจัดทำร่างของรหัสที่จำเป็นในการตรวจสอบอย่างใกล้ชิดและให้แน่ใจว่าไม่มีที่ไหนเลยที่จะมีแม้กระทั่งสิ่งที่จำเป็นที่จะกล่าวว่าความขัดแย้งที่เกิดขึ้น
ศูนย์รวมของการบันทึกอีก
ที่กำหนดไว้ล่วงหน้า / superglobals
ในการเขียนโปรแกรมภาษาทุกมีชื่อบางส่วนที่มีการเช่าเหมาลำสำหรับบางส่วนของฟังก์ชั่น ดังนั้นการสร้างใน PHP ตัวแปรทั่วโลกที่มีชื่อเดียวกันจะไม่ทำงาน
การเขียนโปรแกรมภาษานี้มีลักษณะของตัวเอง ดังนั้นจึงเป็นสิ่งสำคัญที่ตัวแปรที่กำหนดไว้ล่วงหน้าที่นี่จะไม่ได้รับการติดตั้ง "ซูเปอร์" คือว่าพวกเขาจะไม่สามารถใช้ได้ในทุกสถานที่ ฉันจะแก้ไขมันได้หรือไม่ ตัวแปรที่กำหนดไว้ล่วงหน้าที่มีอยู่ในท้องถิ่นบางส่วนก็จะต้องประกาศดังต่อไปนี้ :. ทั่วโลก«ตัวแปร" มันน่าจะเป็นเช่นเดียวกับก่อนที่จะบอกใช่มั้ย? มันเป็นความจริง แต่ไม่มาก ให้เราดูแล้ว "การต่อสู้" ตัวอย่าง:
- ทั่วโลก $ HTTP_POST_VARS;
- echo $ HTTP_POST_VARS [ 'ชื่อ']
คุณรู้สึกแตกต่างระหว่างพวกเขาหรือไม่ โปรดสังเกตว่าในตัวแปร PHP ไม่จำเป็นต้องใช้ในการทำงาน มันยังสามารถวางไว้ในแฟ้มที่จะรวมอยู่ในนั้น
การเชื่อมโยงและความปลอดภัย
ในขณะที่คุณสามารถดูใน PHP สร้างตัวแปรทั่วโลกไม่ได้เป็นปัญหา แต่จะมีการเชื่อมโยงญาติใด ๆ โดยเฉพาะอย่างยิ่ง? ใช่อาจจะมีพฤติกรรมที่ไม่คาดคิดเมื่อใช้ทั่วโลก แต่ก่อนนั้น backstory เล็ก ๆ น้อย ๆ
ในรุ่น 4.2.0 สั่งโดย register_globals เริ่มต้นเปลี่ยนจากบนของรัฐที่จะออก สำหรับผู้ใช้ส่วนใหญ่นี้ไม่ได้เป็นสิ่งที่สำคัญมาก แต่ก็ไร้ผล หลังจากที่ทั้งหมดจะมีผลโดยตรงต่อการรักษาความปลอดภัยของผลิตภัณฑ์ที่พัฒนาแล้ว หากคุณต้องการที่จะทำให้ตัวแปรทั่วโลก, PHP-สั่งพารามิเตอร์นี้จะไม่ได้รับผลกระทบโดยตรง แต่ใช้ไม่ถูกต้องแล้วสามารถสร้างความมั่นคงทำนอง
ดังนั้นหาก register_globals เปิดอยู่ก่อนที่จะดำเนินการของโค้ดที่เขียนที่เริ่มต้นตัวแปรที่แตกต่างที่มีความจำเป็นเช่นการส่งแบบ HTML รูปแบบ ดังนั้นมันก็ตัดสินใจที่จะปิด
คือสถานะของคำสั่งนี้ในตัวแปรทั่วโลก PHP ทำไมเป็นหนี้มาก? ความจริงก็คือว่าเมื่อรัฐของนักพัฒนาไม่เคยมีความเชื่อมั่นตัวเองสามารถตอบคำถามของที่มันมาจาก ในมือข้างหนึ่งก็จะง่ายต่อการเขียนโค้ด แต่ที่อื่น ๆ - มันเป็นความเสี่ยงด้านความปลอดภัย ดังนั้นเพื่อหลีกเลี่ยงข้อผิดพลาดเช่นเดียวกับข้อมูลการผสมและการสั่งถูกปิดใช้งาน
ตอนนี้ให้ดูไม่ได้ / รหัสรักษาความปลอดภัยเช่นเดียวกับวิธีการตรวจสอบกรณีที่มีการประกาศตัวแปร PHP ทั่วโลกจะมาพร้อมกับความพยายามที่จะยุ่งเกี่ยวกับข้อมูล นี้เป็นสิ่งจำเป็นในการสร้างไม่เพียง แต่สวยงาม แต่ยังทำงานอย่างต่อเนื่องเว็บไซต์ที่ไม่แตกคนแรกที่
โค้ดที่เป็นอันตราย
ลองตั้งค่าตัวแปรที่เป็นจริงสำหรับผู้ที่ได้รับอนุญาต:
ถ้า (authenticate_user ()) {
$ Authorize = true;
}
ถ้า ($ อนุมัติ) {
รวมถึง "/highly/sensitive/data.php";
}
ในรัฐนี้ตัวแปรที่สามารถตั้งค่าโดยอัตโนมัติ พิจารณาว่าข้อมูลที่สามารถเพียงแค่ถูกแทนที่และแหล่งที่มาของการกำเนิดของพวกเขาไม่ได้ถูกกำหนดแล้วทุกคนสามารถผ่านการทดสอบดังกล่าวและหลอกว่าเป็นคนอื่น ถ้าต้องการให้ผู้บุกรุก (หรือเพียงแค่คนที่อยากรู้อยากเห็น แต่ไม่มีประสบการณ์) อาจด้อยค่าตรรกะของเรา
ถ้าเราเปลี่ยนค่าของคำสั่งรหัสนี้จะทำงานได้อย่างถูกต้องในขณะที่เราจำเป็นต้องใช้ แต่เริ่มต้นของตัวแปรไม่ได้เป็นเพียงเสียงที่ดีในการเขียนโปรแกรม แต่ยังช่วยให้เรามีการรับประกันหนึ่งของความมั่นคงของสคริปต์
รุ่นที่น่าเชื่อถือของรหัส
คุณสามารถปิดการทำงานหรือคำสั่งหรือกำหนดรหัสที่ซับซ้อนมากขึ้นเพื่อให้บรรลุเป้าหมายนี้ ตัวอย่างเช่นนี้
ถ้า (isset ($ _ SESSION [ 'ชื่อผู้ใช้'])) {
echo "สวัสดี {$ _ SESSION [ 'ชื่อผู้ใช้']} b>";
} else {
echo "สวัสดี เกสท์ b>
";
echo "ผู้ใช้ยินดีต้อนรับ!";
}
ทำให้ทดแทนในกรณีนี้มีจะเป็นเรื่องยาก แต่ก็ยังคง - เป็นไปได้ การทำเช่นนี้คุณจะต้องดูแลว่าเครื่องมือที่ตอบสนองอย่างรวดเร็วมีให้ หากคุณต้องการที่จะรวมตัวแปรใน PHP, คุณสามารถใช้เครื่องมือดังต่อไปนี้ถ้าเรารู้ว่าสิ่งที่ช่วงคือค่าที่ได้รับก็เป็นไปได้ที่จะลงทะเบียนสคริปต์เพื่อตรวจสอบเรื่องนี้ด้วยการจับคู่ แน่นอนว่ามันยังไม่ได้รับประกันคุ้มครองเต็มรูปแบบกับค่าทดแทน แต่นั่นเป็นตัวเลือกมากเกินไปอย่างมีนัยสำคัญที่ซับซ้อน
พบความพยายามที่จะสวมหน้ากาก
ลองดูว่าคุณเข้าใจที่เขียนไว้ก่อนหน้านี้ ใน PHP ตัวแปรทั่วโลกในการทำงานที่จะได้รับด้านล่างนี้คุณจะต้องประกาศตัวเอง เราสามารถพูดได้ว่านี้เป็นชนิดของบ้านในการดูดซึมของหัวข้อบทเรียนที่ นี่คือรหัส:
} elseif (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {
mail ( "administrarot@example.com", "เรียนสคริปต์ได้รับการบันทึกความพยายามในการลักทรัพย์และยุ่งเกี่ยวกับข้อมูล", $ _SERVER [ 'REMOTE_ADDR']);
echo "มีความปลอดภัยหักเป็นหรือพยายามที่จะทำเช่นนั้นได้รับการแจ้งเตือนผู้ดูแลระบบ.";
ทางออก;
} else {
}
?>
ตอนนี้คำอธิบายดังกล่าว บางส่วน C_COOKIE มาให้เราจากแหล่งที่เชื่อถือได้ เพื่อความพึงพอใจอย่างเต็มที่ตามผลที่คาดหวังเราจะตรวจสอบความคุ้มค่าและแจ้งให้ผู้ดูแลระบบในกรณีที่เกิดปัญหา ถ้ามันไม่ได้มาจากนั้นดำเนินการใด ๆ และไม่ต้องการที่จะทำให้ คุณต้องเข้าใจว่าเพียงแค่ปิดการใช้งานคำสั่ง register_globals ไม่ได้ทำให้รหัสของคุณมีความปลอดภัย ดังนั้นตัวแปรใด ๆ ที่ได้รับสคริปต์จากผู้ใช้ควรจะตรวจสอบมูลค่าที่คาดว่าจะ
ข้อสรุป
ที่นี่ในทั่วไปและทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับตัวแปรทั่วโลกจะประสบความสำเร็จและปลอดภัยใช้พวกเขาในการทำงานของพวกเขา แน่นอนที่จะบอกว่ามีการรับประกันเต็มรูปแบบที่ไม่มีใครจะใช้พวกเขาไม่สามารถ - ผู้โจมตีจะมีการปรับปรุงวิธีการและทักษะของพวกเขา ดังนั้นจึงเป็นที่พึงปรารถนาเพื่อ จำกัด การใช้งานสูงสุดของตัวแปรในรหัส โชคดีที่มีโครงสร้างและการออกแบบลักษณะของภาษาโปรแกรมนี้สามารถบรรลุเป้าหมายนี้ โชคดี!
Similar articles
Trending Now