Autor Zpráva
prem
Profil *
Ahoj,

bohužel potřebuji umístit web na hosting, kde nefunguje fce mail(); respektive administrátoři hostingu ji schválně zakázali. Poslali mi kus kódu, pomocí kterého můžu fci mail obejít, nejsem z ní ale vůbec chytrý. Mohl by mi někdo polopatě říct, jak na to?

Díky a přikládám onen kus kódu:

function send() {
      global $smtp_host, $smtp_port, $text91;
      global $smtp_auth;
 
      $mime = $this->get_mail(false);
 
      $allrecip = $this->to.",".$this->cc.",".$this->bcc;
      str_replace(",,", ",", $allrecip);
      $recipients = explode(",", $allrecip);
 
      if ($smtp_host != "localhost") {
        $fp = fsockopen($smtp_host,$smtp_port);
        $data = substr(fgets($fp,1024),0,3);
        if ($data != "220") {
          echo "<div align='center'>&nbsp;<p>&nbsp;<p>" . $text91 . "</div>";
          die;
        }
        fputs($fp,"HELO localhost\r\n");
 
        if ($smtp_auth == "yes") {
          $user = base64_encode($this->smtp_user);
          $pass = base64_encode($this->smtp_pass);
          fputs($fp, "AUTH LOGIN\r\n");
          fputs($fp, "$user\r\n");
          fputs($fp, "$pass\r\n");
        }
 
        $data = fgets($fp,1024);
        fputs($fp, "mail from:<" . $this->from . ">\r\n");
        for($i=0; $i<=sizeof($recipients); $i++) {
           if ($recipients[$i] != null) {
              $data = fgets($fp,1024);
              fputs($fp,"rcpt to: <" . $recipients[$i] . ">\r\n");
           }
        }
        $data = fgets($fp,1024);
        fputs($fp,"data" . "\r\n");
        $data = fgets($fp,1024);
        fputs($fp, $this->message_all . "\r\n");
        fputs($fp,"\n.\r\n");
        $data = fgets($fp,1024);
        fputs($fp,"quit\r\n");
        $data = fgets($fp,1024);
        sleep(1);
        fclose($fp);
      } else {
        mail($this->to, $this->subject,  "", $mime);
      }
    }
bohyn
Profil
prem
Je to jen kus kodu nejake tridy. Doporucuju spis zmenu hostingu nez se patlat s neuplnym kodem a dopisovat zbytek. Takoveto jednani hostingu mi pripada neseriozni.
prem
Profil *
To si myslím taky, ovšem nejsem si jistý, jestli se mi podaří onu firmu ke změně přesvědčit. Uvidíme. Ještě bych se rád zeptal na toto:

Tahle firma poskytující hosting tvrdí že fce mail() má bezpečnostní díru a pokud se k nim na hosting umístí neodborně udělaná prezentace, lze toho využít a rozesílat spam. Pro mě je s podivem to, že větší firmy, zabývající se jen hostingem fci mail normálně dovolují použít a troufám si tvrdit, že hostují mnohokrát více prezentací a mezi nimi rozhodně také prezetance nekvalitní a nemají s tím problém. Jinak mě moc nenapadá jak já, jako programátor při použití fce mail můžu ovlivnit to, jestli ji někdo zneužije nebo ne.
bohyn
Profil
prem
Pokud mas diru ve scriptech tak muze utocnik nahrat na server vlastni script (treba schovany v obrazku) a tim ziskat treba i neomezeny pristup k cele prezentaci - tedy i k nahrani vlastniho scriptu. Moznosti utoku je urcite vic, tohle je takova proflaknuta dira. Funkce mail() jako takova AFAIK zadnou bezpecnostni diru nema. To ze je casto zneuzivana pro SPAM je vec jina a hosting by to mel resit az po tom co nekdo zacne SPAMovat a ne "preventivne" predem postihnout vsechny klienty.

Edit: Treba WebZdarma to resi tak ze ma omezeny pocet mailu za hodinu. Sice nevim jak to pocitaji, ale funguje jim to. Takze kdyz uz jsou paranoidni tak i toto muze byt reseni.
nightfish
Profil
prem
kašli na funkci mail() a použij phpmailer
prem
Profil *
Výborný, phpmailer funguje!!! díky moc !!!
imploder
Profil
bohyn
Treba WebZdarma to resi tak ze ma omezeny pocet mailu za hodinu. Sice nevim jak to pocitaji, ale funguje jim to. Takze kdyz uz jsou paranoidni tak i toto muze byt reseni.
Pokud někdo posílá od nich spam, tak na to můžou doplatit všichni tím, že se server, co sdílejí s tím spamerem, ocitne někde na blacklistu. Pak budou i ostatní za spamery. Pokud si pamatuju wz.cz už s tímhle někdy problémy mělo a chcou se tomu vyhnout.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0