Zaščita PHP skripte - Joomla

Stran imam narejeno v Joomli 2.5. V eni od podmap www.domena.com/podmapa imam php skripto ki pobere z druge strani podatke o ceni in jo zapiše v tabelo. Tabela se nahaja v isti bazi kot vse tabele od Joomle. Komponenta v Joomli iz te tablele potem prebere podatke in jih prikaže na strani.

Zanima me kako bi lahko zaščitil php skript saj je sedaj v njem podatek za dostop do baze vpisan kot navaden tekst:

mysql_connect("localhost:3306","uporabnik","geslo");

Ali se da za connect na bazo uporabiti katerega od klicev za Joomlo, ali je bolje na kakšen način zaščititi sam php file? S .htaccess mogoče.

6 odgovorov

php file je "zasciten" (executable) ze sam po sebi... ce nima nihce dostopa do ftpja ali kako drugace do raw fajlov, pol nima kaj praskat...

ce bos lazje spal, includaj pol config fajl od joomle in uporabi joomla spremenljivke za connect

1

@Mešetar, ponavadi je te connectione boljše dat od Joomle že zato, da če spremeniš geslo na bazi, da ti ni potrebno spreminjat vseh connectionov kjer so takole kot pri inkanet v vsaki skripti posebej ampak samo spremeniš v Joomli in vse deluje naprej kot prej.

1

ja sej... zato sem mu tudi to predlagal...
pa cetudi je spraseval, kako zascitit php file in ne kaj je iz structure design/maintainability point of view-ja boljse... ;)

Aha, OK.

Sem razumel, da si mu želel povedat da je tako čisto v redu, če pa bo lažje spal, da pa lahko tudi includa :) v smislu da raje pusti tako, ampak če se bo bolje počutil naj naredi tako kot je prav :)

Ni tak problem spremeniti ročno, ker se gre samo za eno stran/bazo.

Se pravi nekaj takega če bi to reševal v okviru joomle:

<?php
        //init Joomla Framework
        define( '_JEXEC', 1 );
        define( 'DS', DIRECTORY_SEPARATOR );
        define( 'JPATH_BASE', realpath(dirname(__FILE__).DS.'..' ));

        require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
        require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

        $mainframe = JFactory::getApplication('site');

        //DBQuery
        $database =& JFactory::getDBO();
        $query = "SELECT * FROM ..... WHERE ....;";
        $database->setQuery($query);
        $result = $database->query();
        print_r($result);
    ?>

V bistvu če razumem pa to niti ni potrebno ker je php varen pred "pogledi od zunaj"?

tako je, ce je webserver pravilno nastiman (kar je ze po defaultu) ne more nihce pogledat v kodo php skripte, vidi le output ven