Dołącz do zespołu ekspertów! Backend lub Frontend Developer?

Sprawdź najnowsze oferty pracy naszego partnera - 8lines.io!

Zmiana linków do obrazków http, tak by były wyświetlana jakby wewnątrz strony https.

Założony przez  Swordancer.

wersja skryptu MyBB:1.8.5
adres forum:https://odjechani.com.pl
na czym polega problem (screen, opis, komunikaty):

No więc zapytam ekspertów, zanim zrobię coś głupiego. Ogólnie mam kilka pytań i całą problematykę przedstawię poniżej.

Wiadomo, że jak na stronie https pojawią się obrazki z http, to przeglądarki krzyczą po cichu, że mixed content, że strona nie jest bezpieczna itd, dlatego pytanie pierwsze.

Czy jeśli oszukam przeglądarkę podkładając zasoby w taki sposób jak poniżej: 

https://odjechani.com.pl/imagepx/imagepx...2Hiq1V.png

To czy to jest do końca bezpieczne i nie robi żadnej różnicy, poza oszukiwaniem przeglądarki? Czy to bezpieczne, legalne (np. z punktu widzenia Google), nie będzie z tym problemów?

No i drugie pytanie zakładając, że nie będzie problemów.

Korzystam ze sprytnego rozwiązania od @Devilshakerz, w postaci pluginu, który wymienia obrazki http na zwykłe URL, a ja chciałbym, że by wymieniał obrazki http, na taki sprytny myk jak tu sobie wymyśliłem. 

Grzebiąc w Jego pluginie trafiłem na ten fragment kodu, aczkolwiek nie znam składni kodu php, co mnie zawsze mocno denerwuje i coś tam staram się kminić, ale podziwiam tych co się go nauczyli. 

class dvz_sc
{

 
   static $showPluginTools false;

 
   // hooks
 
   static function parse_message (&$message)
 
   {
 
       global $mybb$parser;

 
       if ($mybb->settings['dvz_sc_images'] && $parser->options['allow_imgcode']) {

 
           // collapse non-HTTPS images back to links
 
           $message preg_replace_callback(
 
               '/<img src="(http:\/\/[^<>"\']+)"(?: width="[0-9]+" height="[0-9]+")? border="0" alt="([^<>"\']+)" (?: style="float: (left|right);")?\/>/i',
 
               static function ($matches) use ($parser) {
 
                   return $parser->mycode_parse_url($matches[1], $matches[2]);
 
               },
 
               $message
            
);

 
       }
 
   

To jest chyba to o ile się nie myli, no i fajnie byłoby przetestować działanie z tym pliczkiem php, który podkłada obrazki, chyba coś jak proxy, a przynajmniej taki termin mi się nasuwa jak na to patrzę. 

Przy okazji jeśli to okaże się bezpiecznie, to przecież zawsze inni mogą skorzystać. Jak widać pod urlem który na górze podałem, jest zasób http, ale przeglądarka tego nie dostrzega.

Chodzi mi wyłącznie o obrazki w postach i sygnaturach, te które wrzucają userzy, bo nie mogę im utrudnić ich wstawiania wymuszając https, a ich niewiedza może sprawić, że patrząc na głupi komunikat przeglądarki, pomyślą coś głupiego.

PS:Tak, wiem, jestem uparty jak osioł. :D To cecha rodzinna. ;)
Forum: https://odjechani.com.pl Konto testowe - Login:Mybboard.pl Hasło:mybboard Posiadam link do Mybboard.pl w stopce. 
Dobra, rozwiązałem to sam:

class dvz_sc
{

 
   static $showPluginTools false;

 
   // hooks
 
   static function parse_message (&$message)
 
   {
 
       global $mybb$parser;

 
       if ($mybb->settings['dvz_sc_images'] && $parser->options['allow_imgcode']) {

 
           // collapse non-HTTPS images back to links
 
           $message preg_replace_callback(
 
               '/<img src="(http:\/\/[^<>"\']+)"(?: width="[0-9]+" height="[0-9]+")? border="0" alt="([^<>"\']+)" (?: style="float: (left|right);")?\/>/i',
 
               static function ($matches) use ($parser) {
 
                   return $parser->mycode_parse_img('//mój_url/imagepx/imagepx.php?url=' $matches[1], $matches[2]);
 
               },
 
               $message
            
);

 
       }
 
   

Obrazki teraz wczytują się i nie ma komunikatu o mieszanych zasobach http i https, mimo że obrazki są http.

Teraz tylko pytanie, czy to jest w porządku i bezpieczne?

Przykład można sprawdzić tu: https://odjechani.com.pl/Thread-Agar-io%...4%82-Hacki
Forum: https://odjechani.com.pl Konto testowe - Login:Mybboard.pl Hasło:mybboard Posiadam link do Mybboard.pl w stopce. 
(09.09.2015, 14:36)Swordancer napisał(a): Teraz tylko pytanie, czy to jest w porządku i bezpieczne?
Jeśli chodzi o samo połączenie, zamiast bezpośredniego żądania do zewnętrznego serwera (HTTP) przeglądarka wysyła żądanie do serwera forum - jeśli korzystasz z CloudFlare, najpierw trafia ono do ich serwerów (HTTPS), które następnie przekazują je do twojego serwera (jeśli - bez względu na użycie CloudFlare - nie obsługuje HTTPS, to połączenie nie jest w żaden sposób zabezpieczone; opcja Full w ustawieniu SSL (with SPDY) w panelu CF zapewnia użycie jakiegoś certyfikatu z szyfrowaniem [niekoniecznie bezpiecznego i zaufanego] - pełne i bezpieczne szyfrowanie zapewnia tylko ustawienie Full (Strict), do którego potrzebny jest płatny certyfikat).
Twój serwer - jako, że ten zewnętrzny nie wspiera HTTPS, co jest powodem użycia opisywanego mechanizmu - używa niezabezpieczonego połączenia z serwerem zewnętrznym, by pobrać obrazek. Odpowiedź z twojego serwera wędruje przez serwery CloudFlare (bezpieczeństwo adekwatne do ustawionej opcji jak wcześniej) do użytkownika (HTTPS).

Połączenie między serwerami forum - serwer obrazkowy (na schemacie 2 i 3) nie posiada jakichkolwiek zabezpieczeń (jeśli atakujący ma dostęp do linii na tym poziomie, może zrobić, co chce), a bezpieczeństwo CF - forum zależy od wspomnianego ustawienia. Jeśli nie posiadasz planu Business, CloudFlare będzie akceptować dowolny certyfikat - to połączenie będzie szyfrowane, ale równie dobrze CF może komunikować się z serwerem, z którym nie powinien (jeśli atakujący będzie w stanie przekierować połączenie).

[Obrazek: image.png]

Jedno, niezabezpieczone połączenie będzie dzielone na trzy (użytkownik → CF ↔ forum → serwer zewnętrzny) - nie będzie bezpieczne całkowicie (więc jest to manipulacja przeglądarkami, które nie wiedzą, co dzieje się dalej - zwłaszcza, gdy serwer forum nie jest w stanie stwierdzić, czy pobiera właściwy plik i z właściwego miejsca), ale manipulacja połączeniami pomiędzy serwerami jest trudniejsza niż pomiędzy jakimś serwerem a użytkownikiem, bo w tym przypadku mamy już do czynienia z końcowymi dostawcami internetu, możliwie źle skonfigurowanymi routerami i niezabezpieczonymi sieciami bezprzewodowymi.

Dodatkowo, jeśli nie stosujesz cache w twoim rozwiązaniu, może to prowadzić do zwiększenia zużycia transferu (w zależności od ilości i rozmiarów wstawianych obrazków), zwłaszcza, jeśli ktoś spróbuje "zapchać" go próbując wstawić na forum obrazki o bardzo dużych rozmiarach; będzie to też kolejny w MyBB punkt, który zdradzi IP serwera (obok automatycznego pobierania avatarów z podawanych adresów i wstawiania obrazków do postów [MyBB pobiera o nich informacje]), czemu niektórzy próbują zapobiec (w zależności od stosowanych zabezpieczeń chroniącymi przed atakami DoS, może to umożliwić ich obejście).
Czyli po prostu nie robię nic innego, jak oszukuję przeglądarkę użytkownika, ale poziom bezpieczeństwa jest dokładnie taki sam jakby, tego nie używał w miejscach gdzie obrazki są http?

Wiem, że tego typu szyfrowanie przez Cloudflare nie jest pełne, ale chciałem wiedzieć, czy po po prostu w jakiś dodatkowy sposób nie narażam się na niebezpieczeństwo lub nie narażam na to użytkownika. Rozumiem, że jeśli ktoś wstawi mi obrazek przez http o rozmiarze 200GB, wywoła sobie i pobierze, to mi wkroi cały transfer, bo było transferowane przez moją stronę?

No nic, wyłączam to, bo nie ma sensu, z resztą lepiej niech użytkownik wie, że pobiera zasoby z nieszyfrowanych serwerów.

Przydałoby się rozszerzenie, które po prostu przegrywałoby obrazki w chmurę, podmieniały link w poście i tyle, cały problem miałbym z głowy, chmurę bym opłacał osobno lub korzystał z darmowych i tyle. Wklejam link w post, wysyła się w moją prywatną chmurę, lub jeśli mam wystarczająco dużo transferu i przestrzeni, to na FTP i tyle. Coś podobnego ktoś stworzył tu, ale to "could expose your forum", jakoś mnie odciąga, no i wrzuca to na FTP, a to mi nie odpowiada.

No i wkurzające są ceny tych certyfikatów, ktoś kiedyś powinien zacząć wystawiać darmowe i w końcu internet stałby się bezpieczniejszym miejscem.
Forum: https://odjechani.com.pl Konto testowe - Login:Mybboard.pl Hasło:mybboard Posiadam link do Mybboard.pl w stopce. 
(09.09.2015, 17:26)Swordancer napisał(a): Czyli po prostu nie robię nic innego, jak oszukuję przeglądarkę użytkownika, ale poziom bezpieczeństwa jest dokładnie taki sam jakby, tego nie używał w miejscach gdzie obrazki są http?

Wiem, że tego typu szyfrowanie przez Cloudflare nie jest pełne, ale chciałem wiedzieć, czy po po prostu w jakiś dodatkowy sposób nie narażam się na niebezpieczeństwo lub nie narażam na to użytkownika.
Nie można zapewnić bezpieczeństwa na poziomie zwykłego (i pojedynczego) połączenia HTTPS, ale takie rozwiązanie jest prawdopodobnie lepsze pod względem bezpieczeństwa. Im wyższe ustawienie SSL na CF, tym lepiej.

Cytat:Rozumiem, że jeśli ktoś wstawi mi obrazek przez http o rozmiarze 200GB, wywoła sobie i pobierze, to mi wkroi cały transfer, bo było transferowane przez moją stronę?
Tak.

Cytat:Przydałoby się rozszerzenie, które po prostu przegrywałoby obrazki w chmurę, podmieniały link w poście i tyle, cały problem miałbym z głowy, chmurę bym opłacał osobno lub korzystał z darmowych i tyle. Wklejam link w post, wysyła się w moją prywatną chmurę, lub jeśli mam wystarczająco dużo transferu i przestrzeni, to na FTP i tyle. Coś podobnego ktoś stworzył tu, ale to "could expose your forum", jakoś mnie odciąga, no i wrzuca to na FTP, a to mi nie odpowiada.
Można zapisywać pliki na własnym serwerze, podmieniając linki - MyBB posiada ustawienia wysyłania plików na serwery CDN. Trzeba by zbudować odpowiedni mechanizm.

Cytat:No i wkurzające są ceny tych certyfikatów, ktoś kiedyś powinien zacząć wystawiać darmowe i w końcu internet stałby się bezpieczniejszym miejscem.
Będą do końca tego roku (https://letsencrypt.org), ale większość standardowych hostingów (współdzielone) najprawdopodobniej nie będzie pozwalać na ich instalację.
No ciekawie, ale mniejsze hostingi zawsze podchwycą nowości, u nas można itd, może coś ciekawego z tego wyjdzie. Tak czy siak dzięki za pomoc. Przypomnisz mi może, co przestawić w directadmin, żeby mi opcja Full na CF działała? (mam flexible) Oczywiście nie ta najwyższa, bo jak włączę, to mam tylko napis Apache is working, domyślam się, że pliki ładują się z niewłaściwego katalogu.
Forum: https://odjechani.com.pl Konto testowe - Login:Mybboard.pl Hasło:mybboard Posiadam link do Mybboard.pl w stopce. 
(09.09.2015, 18:01)Swordancer napisał(a): co przestawić w directadmin, żeby mi opcja Full na CF działała?

Konfiguracja domenUżyj dowiązania symbolicznego private_html do public_html (Zrzut 8. http://www.blog.ravns.net/instalacja-cer...la-domeny/)
Hmm, mam to już włączone, ale na Full widzę tylko apache is working i tyle. Chyba muszę mieć SSL na serwerze, a nie mam, no nic trudno. Może kiedyś sobie wykupię, jak będą tanie, na razie, to niewarte zachodu.
Forum: https://odjechani.com.pl Konto testowe - Login:Mybboard.pl Hasło:mybboard Posiadam link do Mybboard.pl w stopce. 



Użytkownicy przeglądający ten wątek:

2 gości