Ben bir seçenekler sayfası ile bir wordpress tema var. Ben temel bir ihracat / ithalat seçenekleri özelliğini dahil ettik. Ihracat özelliği. Kullanıcıların bir metin seçenekleri indirmek için dat dosyası sağlar ve kendi bilgisayarınızda saklayın. Içe aktarma seçenekleri düğmesi. Dat dosyasını okur ve veritabanındaki mevcut seçenekleri yazar. Ardından dosya (sunucusunda depolanan değil) komut dosyası yürütme sonunda silinir.
Her şey bir komut (ihracat, ithalat, vb) olur ayrı uploads.php dosyaları vardır.
Ben bazı php dosyaları ve diğer dosya türlerini ithal denedim ve oldu tek şey seçenekler sildi oldu. Ama gerçekleşmesi beklenen buydu, ithal dosya veritabanında ne olursa olsun değiştirmek gerekiyordu.
Onlar yönetici erişimi olan WordPress Dashboard oturumu ise kullanıcı sadece bu formu erişebilirsiniz.
Yani bu ithalat formda geniş güvenlik özellikleri olması gerek, orada mi? Dışında, belki de ben. Ile sql dosyaları deneyin ve neler olacağını görmek gerekir? Birisi potansiyel bir. Sql dosyası oluşturun ve tüm veritabanı wipeout misiniz? Ben Kara olmalıdır. Sql dosyaları güvenli olması için?
İşte benim ithalat kodu:
if ( $_GET['page'] == basename(__FILE__) ) {
if ( 'export' == $_POST['action']) {
cpress_export();
}
if (isset($_FILES['settings'])){
if ($_FILES["settings"]["error"] > 0){
echo "Error: " . $_FILES["settings"]["error"] . "<br />";
} else{
$rawdata = file_get_contents($_FILES["settings"]["tmp_name"]);
$cp_options = unserialize($rawdata);
update_option('cpress_options', $cp_options);
header("Location: themes.php?page=options_page.php&import=true");
}
}
Ve burada (aynı dosyada) benim ihraç kodu:
function cpress_export(){
$settings = get_option('cpress_options');
$file_out = serialize($settings);
header("Cache-Control: public, must-revalidate");
header("Pragma: hack");
header("Content-type: text/plain; charset=ISO-8859-1");
header('Content-Disposition: attachment; filename="cpress-options-'.date("Ymd").'.dat"');
echo $file_out;
exit;}