วิธีค้นหาอินพุตทั้งหมดที่ใช้ประโยชน์จากฟิลเตอร์อินพุต php เพื่อปิดใช้งานโมดูลตัวกรอง php ได้อย่างสมบูรณ์?


10

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

มีวิธีหรือวิธีการง่ายๆโดยใช้คำสั่ง SQL เพื่อค้นหาว่าตัวกรอง php ถูกนำไปใช้ในเว็บไซต์ของฉันหรือไม่?

คำตอบ:


9

แทนที่จะติดตั้งวงล้อใหม่เพียงแค่ติดตั้งโมดูลตรวจสอบความปลอดภัยซึ่งมีการตรวจสอบต่อไปนี้:

PHP หรือ Javascript ในเนื้อหา (โหนดและข้อคิดเห็นและฟิลด์ใน Drupal 7)

สำหรับบล็อกคุณสามารถตรวจสอบคอลัมน์รูปแบบในตาราง block_custom

สิ่งที่ยากคือ Views - ฉันยังไม่พบวิธีที่เชื่อถือได้ในการค้นหา PHP อันหลอกลวงใน Views โดยทางโปรแกรม


1
ฉันเดาว่าพวกผู้ตรวจสอบด้านความปลอดภัยไม่สามารถเพิ่มการตรวจสอบความน่าเชื่อถือสำหรับ Views ได้หรือไม่อาจเป็นเรื่องต่อไปที่เป็นไปไม่ได้
Mołot

@ Mołot: เพิ่งค้นพบวิธีที่จะดึงมุมมองที่เปิดใช้งาน php ได้โปรดดูคำตอบของฉันด้านล่าง .. มันจะดีมากถ้ารู้ว่ามันมีข้อเสียหรือกรณีขอบ ...
Anil Sagar

1
ทั้งหมดที่ฉันได้รับคือ "ตกลงผู้ใช้ที่ไม่น่าเชื่อถือไม่สามารถเข้าถึงเพื่อใช้รูปแบบอินพุตของ PHP" - พร้อมเวอร์ชันล่าสุด มันทำให้ผมเป็นสีเขียวเมื่อฉันมีบล็อกที่มีรูปแบบการป้อนข้อมูล PHP ในหน้าด้านหน้า คำตอบของคุณดูเหมือนจะไม่จริงในขณะนี้
Mołot

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


7

คุณสามารถค้นหามุมมองทั้งหมดที่เปิดใช้งาน php ได้โดยเรียกใช้คำสั่งด้านล่างใน MySQL ...

SELECT vv.name , vd.display_options
FROM views_display AS vd
LEFT JOIN views_view AS vv ON vv.vid = vd.vid
WHERE vd.display_options REGEXP '.s:[3]+:"php".*'

ตาราง views_display เก็บข้อมูลนี้ในรูปแบบต่อเนื่อง .... ฉันได้ทดสอบแบบสอบถามข้างต้นทำงานตามที่คาดหวัง .. หวังว่าจะช่วยแก้ปัญหามุมมอง PHP ปริศนาลับสมอง :-)


1
ดูดี. คงต้องทดสอบสักหน่อย ในขณะเดียวกันฉันก็มีเสรีภาพในการแก้ไขและทำความสะอาดวิธีที่คุณเขียนแบบสอบถาม (โดยไม่ต้องสัมผัสมันเป็นตรรกะชื่อ ฯลฯ แน่นอน)
Mołot

ขอบคุณ :-) ฉันเพิ่งตรวจสอบและฉันสามารถดูมุมมองที่เปิดใช้งาน php ได้ .. หวังว่ามันจะใช้ได้กับ OP ด้วย ..
Anil Sagar

1
สิ่งนี้ใช้ไม่ได้กับทุกมุมมอง (เช่นที่กำหนดไว้ในรหัส) และ regex นั้นสามารถสร้างผลบวกปลอมได้อย่างง่ายดาย ... ดีกว่าไม่มีอะไรเลยแม้ว่าฉันจะเดา :)
ไคลฟ์

ด้วยการใช้ phpmyadmin คุณสามารถค้นหาในทุกคอลัมน์ของตารางทั้งหมดได้อย่างง่ายดายค้นหา php และค้นหาผลลัพธ์ด้วยตนเอง
rooby

0

รหัสจาก Anil Sagar ด้านบนใช้งานได้เมื่อบันทึกมุมมองในฐานข้อมูลเท่านั้น หากมุมมองเป็นรหัสเท่านั้นมันจะไม่ทำงาน ดังนั้นฉันจึงเขียนตัวอย่างเล็กน้อยที่ฉันเรียกใช้เพื่อบันทึกมุมมองทั้งหมดไปยังฐานข้อมูล จากนั้นฉันสามารถใช้ส่วนย่อยของ MySQL เพื่อพื้นผิว PHP

  $views = views_get_all_views();
  foreach ($views as $view) {
    if (empty($view->disabled)) {
      $view->save();
      drupal_set_message('view saved: ' . check_plain($view->name));
    }
  }

0

คำถามเก่า แต่เป็นครั้งแรกในการค้นหาของ Google

มีโมดูล Contrib ที่ควรจะค้นหารายการ PHP ทั้งหมด:

ค้นหา PHP

โมดูล 'PHP Finder' ใช้เพื่อค้นหาตำแหน่งที่ใช้รูปแบบตัวกรอง PHP ไม่ว่าจะเป็นในโหนดบล็อกหรือมุมมอง


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