Bagikan melalui


Praktik Terbaik untuk Membuat Penangan Filter di Windows Search

Microsoft Windows Search menggunakan filter untuk mengekstrak konten item untuk dimasukkan dalam indeks teks lengkap. Anda dapat memperluas Windows Search untuk mengindeks jenis file baru atau kepemilikan dengan menulis penangan filter untuk mengekstrak konten, dan penangan properti untuk mengekstrak properti file. Filter dikaitkan dengan jenis file, seperti yang ditandai dengan ekstensi nama file, jenis MIME, atau pengidentifikasi kelas (CLSID). Meskipun satu filter dapat menangani beberapa jenis file, setiap jenis hanya berfungsi dengan satu filter.

Topik ini berisi bagian berikut:

Kode Asli

Di Windows 7 dan yang lebih baru, filter yang ditulis dalam kode terkelola secara eksplisit diblokir. Filter HARUS ditulis dalam kode asli karena potensi masalah penerapan versi CLR dengan proses yang dijalankan beberapa add-in.

Berikut ini adalah praktik untuk menulis aplikasi aman untuk digunakan dengan Windows Search.

Untuk aplikasi kueri:

  • Saat menulis klien pencarian, Anda harus memilih API yang berjalan dalam konteks keamanan yang memungkinkan pengguna hak istimewa paling sedikit. Misalnya, halaman ASP dapat menggunakan objek kueri IXSSO, yang berjalan sebagai proses pengguna.

Untuk IFilter dan Sumber Daya Bahasa:

  • Jika handler filter baru untuk jenis file sedang diinstal sebagai pengganti pendaftaran filter yang ada, alat penginstal harus menyimpan pendaftaran saat ini dan memulihkannya jika handler filter baru dihapus instalannya. Tidak ada mekanisme untuk menautkan filter. Oleh karena itu, handler filter baru bertanggung jawab untuk mereplikasi fungsionalitas filter lama yang diperlukan.
  • IFilter, pemecah kata, dan stemmer untuk Windows Search berjalan dalam konteks Keamanan Lokal. Mereka harus ditulis untuk mengelola buffer dan untuk menumpuk dengan benar. Semua salinan string harus memiliki pemeriksaan eksplisit untuk melindungi dari overrun buffer. Anda harus selalu memverifikasi ukuran buffer yang dialokasikan dan menguji ukuran data terhadap ukuran buffer. Buffer overruns adalah teknik umum untuk mengeksploitasi kode yang tidak memberlakukan pembatasan ukuran buffer.
  • IFilter, pemecah kata, dan komponen stemmer tidak boleh memanggil fungsi Fungsi ExitProcess atau API serupa yang mengakhiri proses dan semua utasnya.
  • Jangan mengalokasikan atau membebaskan sumber daya di titik masuk DllMain. Ini dapat menyebabkan kegagalan selama pengujian stres sumber daya rendah.
  • Kode semua objek agar aman untuk utas. Windows Search memanggil satu instans pemecah kata atau stemmer dalam satu utas pada satu waktu, tetapi dapat memanggil beberapa instans secara bersamaan di beberapa utas.
  • Hindari membuat file sementara atau menulis ke registri.
  • Jika Anda menggunakan pengkompilasi Microsoft Visual C++, pastikan Anda mengkompilasi aplikasi menggunakan opsi /GS . Opsi /GS digunakan untuk mendeteksi buffer overruns. Opsi /GS menempatkan pemeriksaan keamanan ke dalam kode yang dikompilasi. Untuk informasi selengkapnya, lihat DllGetClassObject Function /GS (Pemeriksaan Keamanan Buffer) di bagian Opsi Pengkompilasi Visual C++ dari Platform SDK.

Sumber Daya Tambahan

Mengembangkan Handler Filter

Tentang Penangan Filter di Windows Search

Mengembalikan Properti dari Penangan Filter

Filter Handler yang Dikirim dengan Windows

Menerapkan Handler Filter di Windows Search

Mendaftarkan Penangan Filter

Menguji Handler Filter