Bagaimana menemukan semua input yang menggunakan filter input php untuk sepenuhnya menonaktifkan modul filter php?

10

Saya ingin menonaktifkan modul Filter PHP di situs web besar, tetapi melalui semua node, blok dan bidang lain di mana Anda dapat membuat penggunaan filter php akan memakan waktu ribuan tahun.

Apakah ada cara atau metode sederhana mungkin dengan menjalankan query SQL untuk mencari tahu di mana filter php digunakan di seluruh situs web saya?

Alex
sumber

Jawaban:

9

Daripada menciptakan kembali roda, cukup pasang modul Security Review , yang memiliki pemeriksaan berikut:

PHP atau Javascript dalam konten (node ​​dan komentar dan bidang dalam Drupal 7)

Untuk blok Anda dapat memeriksa kolom format di tabel block_custom.

Yang sulit adalah Views - Saya belum menemukan cara yang dapat diandalkan untuk menemukan PHP jahat di Views secara terprogram.

Clive
sumber
1
Saya kira jika Security Review guys tidak dapat menambahkan cek yang dapat diandalkan untuk Views, itu mungkin hal yang mustahil.
Mołot
@ Mołot: Baru saja menemukan cara untuk mengambil tampilan yang memiliki php diaktifkan, silakan lihat jawaban saya di bawah ini. Akan menyenangkan mengetahui bahwa ada kekurangan atau kasus tepi ...
Anil Sagar
1
Yang saya dapat hanyalah "OKE Pengguna yang tidak terpercaya tidak memiliki akses untuk menggunakan format input PHP." - dengan versi terbaru. Itu membuat saya hijau ketika saya memiliki blok dengan format input php di halaman depan . Jawaban Anda tampaknya tidak benar pada saat ini.
Mołot
Jadi, dari apa yang dapat saya katakan ... Modul Tinjauan Keamanan memberi tahu Anda bahwa filter php sedang digunakan ... bukan elemen apa yang sebenarnya menggunakannya, yang dalam tinjauan keamanan sejati akan sangat membantu. Namun ini adalah peringatan yang baik bahwa penyelidikan lebih lanjut diperlukan.
Jenderal Redneck
7

Anda dapat menemukan semua tampilan yang memiliki php diaktifkan dengan menjalankan perintah di bawah ini di 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 table menyimpan informasi ini dalam format serial .... Saya telah menguji query di atas berfungsi seperti yang diharapkan .. Semoga ini membantu untuk menyelesaikan tampilan PHP riddle :-)

Anil Sagar
sumber
1
Kelihatan bagus. Akan perlu mengujinya sedikit. Sementara itu saya mengambil kebebasan mengedit dan membersihkan cara Anda menulis kueri (tanpa menyentuh logika itu, nama dll tentu saja).
Mołot
Terima kasih :-) Saya baru saja memverifikasi dan saya dapat melihat tampilan yang memiliki php diaktifkan. Mari kita berharap itu berfungsi untuk OP juga ..
Anil Sagar
1
Ini tidak berfungsi untuk semua tampilan (misalnya yang didefinisikan dalam kode), dan regex itu dapat dengan mudah menghasilkan positif palsu ... lebih baik daripada tidak sama sekali meskipun saya kira :)
Clive
Dengan menggunakan phpmyadmin Anda dapat dengan mudah mencari di semua kolom dari semua tabel, mencari php dan secara manual memeriksa hasilnya.
rooby
0

Kode dari Anil Sagar di atas hanya berfungsi jika tampilan disimpan dalam database. Jika tampilan hanya dalam kode itu tidak akan berfungsi. Jadi, saya menulis cuplikan kecil yang saya jalankan untuk menyimpan semua tampilan ke db. Lalu saya bisa menggunakan potongan MySQL untuk memunculkan 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));
    }
  }
LoopDuplicate
sumber
0

Pertanyaan lama, tetapi pertama di pencarian Google saya.

Ada Modul Contrib yang seharusnya menemukan semua entri PHP:

Pencari PHP

Modul 'PHP Finder' digunakan untuk menemukan di mana format filter PHP digunakan, baik dalam node, blok atau tampilan.

Spokje
sumber
bagaimana dengan PHP yang digunakan dalam Aturan?
Pierre.Vriens