Autor Zpráva
tomyc
Profil *
Zdravím,
potřeboval bych načíst z externího serveru (zařízení) script a začlenit ho do stránky. Script obsahuje pouze pole hodnot, se kterými potřebuji pracovat. Adresa scriptu vypadá takto: http://jméno:heslo@IP_adresa/script.js. Script načtu <script type='text/javascript' src='http://jméno:heslo@IP_adresa/script.js'></script>
Problém je v tom, že ve zdroji je vidět heslo a jméno. Potřeboval bych odkaz načíst na pozadí, aby se k těmto údajům nikdo nedostal. Je to možné nějak docílit?
Děkuji moc za odpovědi
Tomyc
Bubák
Profil
tomyc:
Potřeboval bych odkaz načíst na pozadí, aby se k těmto údajům nikdo nedostal.
To jsou vlastně dotazy dva:
Potřeboval bych odkaz načíst na pozadí“ - Ano, je to možné.
aby se k těmto údajům nikdo nedostal“ - Není to možné, můj hrubý odhad, víceméně vycucaný s prstu je, že to zvládne css jedno procento lidí, ale třebas mezi aktivními účastníky této diskuse by to mohla být i nadpoloviční většina.
aDAm
Profil
celkem easy pokud máš k dispozici možnost skriptovacího jazyka, např. php.
Místo adresy http://jméno:heslo@IP_adresa/script.js tak si zavoláš http://tvoje-stranka.cz/skript.php a pak v souboru skript.php si načteč obsah toho JS skriptu např. pomocé file_get_content či curlem apod. a načtený výsledek pošleš na výstup s hlavičkou JS.
_es
Profil
aDAm [#3]:
A ako rieši „problém“ to, že namiesto „tajnej“ adresy http://jméno:heslo@IP_adresa/script.js si niekto zistí „tajnú“ adresu http://tvoje-stranka.cz/skript.php?
jenikkozak
Profil
_es:
si niekto zistí ‚tajnú‘ adresu http://tvoje-stranka.cz/skript.php
Ta nemusí být tajná, protože uživatel neuvidí, s jakými adresami ten soubor na straně serveru komunikuje.
Bubák
Profil
_es:
To může, ale nemusí být problém, tomyc píše, že „Script obsahuje pouze pole hodnot, se kterými potřebuji pracovat“, takže nikdo nevidí přihlašovací heslo k serveru (ani jeho adresu). Záleží tedy na tom, nakolik tajné jsou údaje na adrese http://tvoje-stranka.cz/skript.php.
jenikkozak mě předběhl a napsal v podstatě totéž jinými slovy.
_es
Profil
jenikkozak, Bubák:
V „základnej logike“ to je predsa stále nezmyselné. To už môže predsa len jednoducho nastaviť, aby bol script.js prístupný aj bez mena a hesla. A spoliehať sa na zabezpečenie, že nikoho nenapadne nejako použiť nejakú IP adresu - to je čo za „zabezpečenie?“
jenikkozak
Profil
Běžně by se zavolal přímo skript http://jméno:heslo@IP_adresa/script.js, kdy by po nahlédnutí do zdrojového kódu každý viděl uživatelské jméno a heslo.

S pomocí PHP je postup následující:
- Zavoláš skript http://tvoje-stranka.cz/skript.php.
- Tento skript na straně serveru získá informace ze stránky http://jméno:heslo@IP_adresa/script.js. Protože komunikace probíhá mezi tvým serverem a serverem IP_adresa, uživatel se URL s heslem nedoví.
- Po získání potřebných informací předá http://tvoje-stranka.cz/skript.php data klientovi.
Chamurappi
Profil
Reaguji na tomyce:
http://jméno:heslo@IP_adresa/script.js
Tento druh adres už prakticky vymřel, ne? Minimálně v Exploreru už asi deset let nefungují a Safari v iPadu je nesmyslně blokuje s výstražnou hláškou, že je to phising (i když to možná jen při zadání do adresního řádku).
tomyc
Profil *
Abych vám to přiblížil. Jedná se o IP IO zařízení. Má možnost nastavování výstupů přes LAN, čtení vstupů, analogové vstupy atd. Na své stránce potřebuji zobrazovat jen stavy těchto IO. Jsou dvě možnosti. Buď pomocí SNMP, což se ale musí načítat každý vstup zvlášť a nebo stažení tabulky z uvedené adresy. To že se někdo propracuje k samotným datům by ani tolik nevadilo. Některé (jako třeba teploty okolí) se stejně budou zobrazovat veřejně. Jenže ono jméno a heslo lze použít i k nastavení konfigurace a řízení výstupů. Proto nechci, aby bylo viditelné. Pokud bude fungovat varianta co píše aDAm, bylo by to řešení.
Ještě bych měl jeden dotaz. Patří sice do sekce PHP, ale vztahuje se ke stejnému zařízení. Potřebuji na serveru vytvořit script (php) a nechat ho spouštět v pravidelném intervalu. Tento script bude číst data z tohoto zařízení a posílat je dál. Tohle všechno bych zvládl, ale chtěl bych, aby to fungovalo i bez připojení k internetu. Umí PHP přistupovat přímo k zařízením na stejném segmentu sítě na kterém běží server? Nahradit http://www.domena.cz:port lokální adresou např. 192.168.1.100
aDAm
Profil
_es:
řeší to tak že případný "štoural" v kódu neuvidí login a heslo a případně IP adresu odkud ty data tahá. Nebo snad nedokážeš pochopit na začátku popsaný dotaz?

Problém je v tom, že ve zdroji je vidět heslo a jméno. Potřeboval bych odkaz načíst na pozadí, aby se k těmto údajům nikdo nedostal. Je to možné nějak docílit?

ale chápu že si pan es_ potřeboval trochu zatrolovat....


tomyc:
skript si vytvoř, pokud na tom serveru máš k dispozici cron úlohy tak nastavit cron úlohu a je to. A pokud tím "bez připojení k internetu" máš namysli zda ti to pojede jen v rámci lokální sítě tak ano, od toho máš v té síti směrovač který ti to správně pošle, samotné spojení ven bys potřeboval v případě kdybys používal doménové jméno a to potřeboval přeložit.
_es
Profil
aDAm:
řeší to tak že případný "štoural" v kódu neuvidí login a heslo a případně IP adresu odkud ty data tahá.
Teda uvidí (v inej časti kódu) inú adresu, z ktorej sa „ťahajú“ úplne tie isté dáta. Otázne, je prečo sa tie isté dáta neťahajú už z pôvodnej adresy bez mena a hesla. Neviem, prečo sa do toho montuje PHP, keď to v dotaze nebolo, a zariadenie má možno podobné programovacie možnosti, ako ten doporučovaný PHP skript.

Chamurappi:
Minimálně v Exploreru už asi deset let nefungují
Aj v elemente script, alebo len v adresnom riadku?
Fisir
Profil
Reaguji na _es:
Otázne, je prečo sa tie isté dáta neťahajú už z pôvodnej adresy bez mena a hesla.
Viz tomyc: „To že se někdo propracuje k samotným datům by ani tolik nevadilo. […] Jenže ono jméno a heslo lze použít i k nastavení konfigurace a řízení výstupů. Proto nechci, aby bylo viditelné.
_es
Profil
Fisir [#13]:
Lenže z toho ešte nevyplýva, že nejde zariadenie nastaviť tak, aby bol script.js dostupný aj bez mena a hesla.
aDAm
Profil
může mi někdo ze zdejších moderátoru řici proč zde proti panu _es nezasáhne? Jeho posty jsou zde absolutně bezpředmětné. Tazatel podal jednoznačnou otázku a pan _es musí mít stále připomínky i když se mu je pokusím vysvětlit.
Moderátor Chamurappi: Neshledávám na jeho otázkách nic škodlivého. Jen se dívá na věc z jiného úhlu, který možná nakonec tomycovi nepomůže, ale to neznamená, že se musí mazat nebo nějak jinak regulovat. Silová řešení jsou až ta poslední možnost…
Fisir
Profil
Reaguji na _es:
A je třeba to tu takhle rozmazávat? Takže:

Reaguji na tomyce:
Dá se zařízení nastavit tak, aby jméno a heslo nevyžadovalo? Pokud ano, budiž ti přáno užít přímou adresu, pakliže ne, nechť ti pomůže PHP skript o kterém psal v [#8] jenikkozak.
tomyc
Profil *
[#14] _es
Bohužel zařízení je pevně naprogramované a nelze do něj zasahovat. Samozřejmě že můžu zrušit heslo a k datům přistupovat bez něho. Tím bych ale odemkl celé zařízení i pro zápis a případnému útočníkovi by stačila pouze adresa a port. Pak by mi mohl třeba nastavit teplotu v obýváku na 40 stupňů :-)

aDAm:
Stále se mi nedaří načíst script pomocí file_get_contents.
$obsah = file_get_contents("http://jmeno:heslo@domena.cz:port/script.js");
Končím s chybou: Warning: file_get_contents(http://...@domena.cz:port/script.js): failed to open stream: HTTP request failed! HTTP/1.0 401 Authorization Required in test.php on line 4. Načíst jiný soubor webu jde bez problémů. Ještě testuji SNMP, ale to zase nemám na serveru všechny knihovny.
Fisir
Profil
Reaguji na tomyce:
Stále se mi nedaří načíst script pomocí file_get_contents.
To nepůjde stejnou cestou, jakou to šlo v prohlížečích. Pravděpodobně bude potřeba cURL a přes něj nastavit autorizační údaje.
Chro
Profil
Neměl by místo protokolu http:// nastaven v URL protokol ftp://?
Mike8748
Profil
tomyc:
zkus to takhle

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://domena.cz:port");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "jmeno:heslo");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

$obsah = curl_exec($ch);
tomyc
Profil *
[#20] Mike8748
Díky z kód. Zrovna jsem to taky zprovoznil
$curl = curl_init("http://jmeno:heslo@domena.cz:port/script.js");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($curl);
curl_close($curl);
Takhle to dělá přesně co potřebuju. Vytvoří se stránka s polem hodnot a ostatní data nejsou nikde vidět.
Děkuji všem za spolupráci
aDAm
Profil
Fisir:
ok, jenikkozak to sice krásně přepsal po bodech ale proč ne, zásluhy připišme jemu.

tomyc:
supr, takže ti to fachčí. Ještě si tam můžeš přihodit hedares a pak to bude tip top ;)
Amunak
Profil
Ještě doplním, že když není možné použít curl, mělo by to jít i přes file_get_contents nějak takto (netestováno):
$user = 'jmeno';
$pass = 'heslo';
$url = 'http"://domena.cz:port/script.js'

$context = stream_context_create(array(
    'http' => array(
        'header'  => 'Authorization: Basic ' . base64_encode($user . ':' . $pass)
    )
));
$data = file_get_contents($url, false, $context);
_es
Profil
tomyc:
Samozřejmě že můžu zrušit heslo a k datům přistupovat bez něho.
Skutočne sa na zariadení nedá nastaviť na len niektoré výstupy prístup bez mena a hesla, alebo mať viaceré mená a heslá na rôzne vstupy a výstupy zo zariadenia? Bude to zariadenie na verejné účely alebo len na súkromné? - Podľa toho - nestačilo by zadávať meno a heslo ručne do prehliadača?
tomyc
Profil *
Zařízení má opravdu jen jedno heslo. Jak jsem již psal, čtení dat mě netrápí. I když se k nim někdo dostane, uvidí jen několik hex čísel a toť vše. Stejně nebude vědět k čemu které je a co s tím. Problém je opravdu jen v tom přístupu do konfigurace. Zařízení disponuje webovým rozhraním jako např. router. Tak kdyby se někdo dostal, mohl by zařízení překonfigurovat. Ještě pro bližší představu, jedná se o destičku cca 5x5cm na které je procesor, LAN konektor a piny I/O. To je krom pár pasivních součástek vše.
_es
Profil
tomyc [#25]:
Myslel som to, že by okrem tu zväčša doporučovanému medzistupňu, napríklad PHP, bolo možné aj zadať na webovej stránke meno a heslo do formulárových polí a na základe nich k dátam pristupovať. No ak je dôležité, aby boli niektoré dáta na čítanie prístupné bez hesla a heslo je len jedno, či by bolo zadávanie hesla obťažujúce, tak také riešenie nie je možné.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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