Външен php файл за връзка с Mysql

gLaVoReZa

Registered
Гледам, че всички са свикнали да правят външен php файл, свързващ се с база данни и го include-ват в скриптовете си за улеснение. Само че ако в този файл е дефиниран пълният адрес до SQL сървъра, потребителско име и парола, какво ми пречи на мен да include-на чужд файл в мой скрипт и да получа достъп до базата му данни?

Това не е ли сериозна дупка в сигурността?
 
gLaVoReZa каза:
Гледам, че всички са свикнали да правят външен php файл, свързващ се с база данни и го include-ват в скриптовете си за улеснение. Само че ако в този файл е дефиниран пълният адрес до SQL сървъра, потребителско име и парола, какво ми пречи на мен да include-на чужд файл в мой скрипт и да получа достъп до базата му данни?

Това не е ли сериозна дупка в сигурността?

Добре, как си мислиш, че от server1.site.com ще се свържеш със server2.site.bg

?
 
MySQL-а не винаги е настроен за отдалечен достъп.
Дори да е настроен, той се настройва само към определени хостове, а не към всички.

А пък и във повечето случай хората пишат localhost за хост на SQL сървъра.
 
Ако направиш акаунт на същия хостинг и на него сложиш php скрипта, тогава и да е написал localhost пак ще стане.
 
Ти дори да инклюднеш файл от чужд хост, то файла, който си инклюднал се изпълнява на онзи сървър и реално при теб излиза само информацията, която се показва и във браузъра (HTML и джаваскрипт), така че няма как да стане :)

И за да инклюднеш файл от URL трябва да имаш включен allow_url_fopen на php-то
 
За всеки случай ще направя няколко практически теста, като ми се занимава и ще видим какво ще стане. :)
 
Виж, сега ще се опитам да ти го обясня по най-простия начин.

Имаме два потребителя. Атакуващ и Жертва..
/home/atakvuasht/public_html/ - има сайт atakuvasht.bg
/home/jertva/public_html/ - има сайт jertva.bg


Двата акаунт са на един сървър в нашия случай избираме да бъде;
test.server.bg

Жертвата има config.php файл, който се свързва с базата от данни. Атакуващия иска да му се свърже с базата от данни.. Ако! на жертвата config е в тази директория(например)

/home/jertva/public_html/config.php

Атакуващия иска да се свърже с този файл.. той ще трябва да направи следното:

test.php
Код:
<?php
include ("/home/jertva/public_html/config.php");

echo "потребител: $user<br />
парола: $pass<br />
база от данни: $db<br />";
?>

По-този начин би трябвало да му изкара информация за потребител, парола и базата от данни как се казва. Като отвори линк: atakuvasht.bg/test.php

Тоест, той се свързва с базата на жертвата. Може да си пусне сайт като "mirror" с подобна система, но информацията е същата. Но само, така си мисли атакуващия.. защото дори и да направи по-горния include най-вероятно ще му излезе: Permission Denied!..

Не ми се обяснява много, понеже ми се спи.. надявам се да си ме разбрал.
 
Малко вероятно да стане особено при хостинг от типа на ICN или Superhosting.Хората са го измислили.А иначе ето идея за защита на файловете които се инклудват:
http://web-tourist.net/login/login/view.php?st=1998
 

Back
Горе