WHMCS'de yeni farkettiğim bir açığın çözümünü paylaşıyorum sizlerle. Sorun şu,
https://hostingsitesi.com/viewinvoice.php?id=5 size ait diyelim. Buna girebiliyorsunuz sorun yok. Ancak https://hostingsitesi.com/viewinvoice.php?id=7 sizin değil ama buna da girebiliyorsunuz. Kısacası hesap sahibi siz olmasanız bile başkasının faturasını görebiliyorsunuz. Dolayısıyla başkasının tc kimlik adresi, açık adres gibi özel bilgiler sıkıntıya düşmekte. Bunun genel bir ayarı var mı bilmiyorum, böyle bir açık olmasına da gerçekten şaşırdım. Her neyse, tek yapmanız gereken aşağıya bıraktığım kodu bir php dosyasının içine yazıp bunu /includes/hooks/ klasörü içine atmak.
<?php
use WHMCS\Database\Capsule;
use WHMCS\Config\Setting;
function invoice_owner_check($vars) {
if ($vars['filename'] == 'viewinvoice') {
$check = Capsule::table('tblinvoices')->where('id', $_GET['id'])->first();
$user_id = false;
if ($vars["userid"]) {
$user_id = $vars["userid"];
}
if ($vars["user"]) {
$user_id = $vars["user"];
}
if ($_SESSION["uid"]) {
$user_id = $_SESSION["uid"];
}
$url = Setting::getValue('SystemURL');
if($user_id != $check->userid){
header('Location: '.$url);
}
}
}
add_hook("ClientAreaPage", 1, "invoice_owner_check");
?>