Proteksi Penulisan Presentasi di PHP
Pendahuluan
Kata sandi perlindungan tulis membatasi modifikasi sebuah presentasi tetapi tidak mengenkripsi isinya. Pengguna dapat memuat dan melihat presentasi yang dilindungi tulis tanpa kata sandi. Tergantung pada aplikasi, mereka mungkin juga dapat mengedit konten dan menyimpannya dengan nama berbeda, jadi perlindungan tulis tidak boleh dianggap sebagai mekanisme kerahasiaan.
Kata sandi pembuka memiliki tujuan yang berbeda: ia mengenkripsi presentasi dan diperlukan untuk memuat isinya. Untuk mengenkripsi presentasi atau memvalidasi kata sandi pembuka, lihat Password-Protect Presentations.
Alur kerja dalam artikel ini berlaku untuk presentasi PPT dan PPTX. Contoh menggunakan file PPTX; ketika menyimpan ke PPT, gunakan ekstensi .ppt dan format penyimpanan PPT yang sesuai.
Atur Perlindungan Tulis pada Presentasi
Gunakan ProtectionManager::setWriteProtection untuk menetapkan kata sandi yang diperlukan untuk memodifikasi presentasi. Menyimpan presentasi akan mempertahankan pengaturan perlindungan tersebut.
Contoh berikut menetapkan perlindungan tulis pada presentasi PPTX:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("pres.pptx");
try {
$presentation->getProtectionManager()->setWriteProtection("modify_password");
$presentation->save("write-protected-pres.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Muat Presentasi yang Dilindungi Tulis
Karena perlindungan tulis tidak mengenkripsi konten presentasi, tidak diperlukan kata sandi untuk memuat presentasi. Kata sandi hanya relevan saat memvalidasi otorisasi untuk mengubah presentasi yang dilindungi.
use aspose\slides\Presentation;
$presentation = new Presentation("write-protected-pres.pptx");
try {
echo("Slide count: " . $presentation->getSlides()->size() . "\n");
} finally {
$presentation->dispose();
}
Jangan berikan kata sandi perlindungan tulis ke LoadOptions::setPassword. Metode tersebut menerima kata sandi pembuka untuk konten yang dienkripsi. Jika sebuah presentasi memiliki kedua jenis perlindungan, berikan kata sandi pembuka untuk memuatnya dan tangani kata sandi perlindungan tulis secara terpisah.
Hapus Perlindungan Tulis dari Presentasi
Gunakan ProtectionManager::removeWriteProtection untuk menghapus pembatasan modifikasi, lalu simpan presentasi.
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("write-protected-pres.pptx");
try {
$presentation->getProtectionManager()->removeWriteProtection();
$presentation->save("write-protection-removed.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Periksa Apakah Presentasi Dilindungi Tulis
Untuk memeriksa file tanpa membuat instance Presentation yang lengkap, panggil PresentationFactory::getPresentationInfo dan periksa PresentationInfo::isWriteProtected. Metode ini menggunakan NullableBool dan mengembalikan NullableBool::True ketika perlindungan tulis terdeteksi.
use aspose\slides\NullableBool;
use aspose\slides\PresentationFactory;
$presentationInfo = PresentationFactory::getInstance()->getPresentationInfo("write-protected-pres.pptx");
if ($presentationInfo->isWriteProtected() == NullableBool::True) {
echo("The presentation is write protected.\n");
} else {
echo("Write protection was not detected.\n");
}
Overload stream dari PresentationFactory::getPresentationInfo memberikan informasi yang sama untuk presentasi yang disediakan sebagai stream.
Validasi Kata Sandi Perlindungan Tulis
Gunakan PresentationInfo::checkWriteProtection untuk memvalidasi kata sandi modifikasi tanpa memuat presentasi secara lengkap. Periksa PresentationInfo::isWriteProtected terlebih dahulu sehingga aplikasi hanya meminta atau memvalidasi kata sandi ketika perlindungan tulis ada.
use aspose\slides\NullableBool;
use aspose\slides\PresentationFactory;
$presentationInfo = PresentationFactory::getInstance()->getPresentationInfo("write-protected-pres.pptx");
if ($presentationInfo->isWriteProtected() != NullableBool::True) {
echo("The presentation is not write protected.\n");
} elseif ($presentationInfo->checkWriteProtection("modify_password")) {
echo("The write-protection password is correct.\n");
} else {
echo("The write-protection password is incorrect.\n");
}
PresentationInfo::checkWriteProtection memvalidasi hanya kata sandi perlindungan tulis. Ia tidak memvalidasi kata sandi pembuka atau menentukan apakah konten terenkripsi dapat dimuat. Sebaliknya, PresentationInfo::checkPassword memvalidasi hanya kata sandi pembuka. Jika sebuah presentasi lengkap sudah dimuat, ProtectionManager::checkWriteProtection menyediakan pemeriksaan perlindungan tulis yang setara melalui manajer perlindungannya.
Dalam aplikasi produksi, jangan mencatat kata sandi atau menyertakannya dalam pesan diagnostik. Hindari upaya validasi berulang yang tidak perlu, dan simpan kata sandi dalam memori hanya selama diperlukan.
FAQ
Apakah perlindungan tulis mengenkripsi sebuah presentasi?
Tidak. Ia membatasi modifikasi tetapi membiarkan konten presentasi tersedia untuk dimuat dan dilihat.
Apakah kata sandi perlindungan tulis diperlukan untuk membuka sebuah presentasi?
Tidak. Hanya kata sandi pembuka yang diperlukan untuk memuat konten presentasi yang terenkripsi.
Apakah sebuah presentasi dapat memiliki kata sandi pembuka dan kata sandi perlindungan tulis sekaligus?
Ya. Berikan kata sandi pembuka melalui opsi muat untuk membuka presentasi yang terenkripsi, dan validasi kata sandi perlindungan tulis secara terpisah ketika otorisasi modifikasi diperlukan.