Od soboty do úterý probíhá v Hamburku konference 39C3 (Chaos Communication Congress) věnovaná také počítačové bezpečnosti nebo hardwaru. Program (jiná verze) slibuje řadu zajímavých přednášek. Streamy a záznamy budou k dispozici na media.ccc.de.
Byl představen nový Xserver Phoenix, kompletně od nuly vyvíjený v programovacím jazyce Zig. Projekt Phoenix si klade za cíl být moderní alternativou k X.Org serveru.
XLibre Xserver byl 21. prosince vydán ve verzi 25.1.0, 'winter solstice release'. Od založení tohoto forku X.Org serveru se jedná o vůbec první novou minor verzi (inkrementovalo se to druhé číslo v číselném kódu verze).
Wayback byl vydán ve verzi 0.3. Wayback je "tak akorát Waylandu, aby fungoval Xwayland". Jedná se o kompatibilní vrstvu umožňující běh plnohodnotných X11 desktopových prostředí s využitím komponent z Waylandu. Cílem je nakonec nahradit klasický server X.Org, a tím snížit zátěž údržby aplikací X11.
Byla vydána verze 4.0.0 programovacího jazyka Ruby (Wikipedie). S Ruby Box a ZJIT. Ruby lze vyzkoušet na webové stránce TryRuby. U příležitosti 30. narozenin, první veřejná verze Ruby 0.95 byla oznámena 21. prosince 1995, proběhl redesign webových stránek.
Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.
Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.
Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.
Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.
Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.
/var/lib/aplikace/dokumenty. Samotná aplikace je uložena ve /var/www/jmeno_serveru/aplikace. Použitá distribuce je Ubuntu 6.06LTS, pokud by to někoho zajímalo. O co jde: v konfiguráku Apache mám zhruba toto:
<VirtualHost jmeno_serveru:443>
DocumentRoot /var/www/jmeno_serveru
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/jmeno_serveru>
Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
Alias /dokumenty /var/lib/aplikace/dokumenty
SetEnvIf REFERER "jmeno\.serveru\.cz" access_granted
<Location /dokumenty>
Order deny,allow
deny from all
allow from env=access_granted
</Location>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
</VirtualHost>
Aplikace je tedy přístupná přes https://jmeno_serveru.cz/aplikace. Tímto konfigurákem jsem chtěl zajistit to, že přístup do adresáře /dokumenty bude povolen jen přesměrováním z webu aplikace pomocí
Na Linuxu to funguje, na Windows nikoliv. Připomínám, že na obojím používáme Firefox 2.0. Otázka tedy zní: dělám něco špatně já, je to chyba Firefoxu na Windows nebo jde mnou nastíněný problém vyřešit nějak elegantně jiným způsobem? Díky.
<?php
header("Content-Type: application/octet-stream");
header("Pragma: no-cache");
header("Cache-Control: no-cache");
header("Expires: ".GMDate("D, d M Y H:i:s")." GMT");
header("Content-Disposition: attachment; filename=\"$jmeno_souboru\"");
readfile($jmeno_souboru_i_s_cestou);
?>
PHP skript vytvoří vhodnou hlavičku a zašle jako obsah onen soubor.
Řešení je to jiné, ale umožňuje např. počítání uživatelů, kteří soubor nejen začali stahovat, ale i dostahovali.
Content-Disposition: attachment. Jo kdyby slo rict neco jako Content-Disposition: inline nebo tak, to by byla jina
Jo kdyby slo rict neco jakoA proč by to nešlo?Content-Disposition: inlinenebo tak, to by byla jina
Nicmene jdu to vyzkouset. Dekuji.
Takze jeste jednou vsem diky.
Na Linuxu to funguje, na Windows nikoliv. Připomínám, že na obojím používáme Firefox 2.0. Otázka tedy zní: dělám něco špatně já, je to chyba Firefoxu na Windows nebo jde mnou nastíněný problém vyřešit nějak elegantně jiným způsobem? Díky.Nemáte na těch Windows nějaký "firewall" nebo proxy, který likviduje http-referer hlavičku? Na něco podobného jsem párkrát narazil u jedné webové aplikace, a pokaždé za to mohlo nějaké "bezpečnostní udělátko".
$_SERVER['HTTP_REFERER']) a funguje jak má jak na Windows, tak na Linuxu. Problém je, že to nefunguje v Apachi. I když... V logu se referer zobrazuje správně (https://jmeno_serveru.cz/aplikace), dokonce i ten soubor se zdá se načítá, nicméně v půlce se to zastaví a ve status baru Firefoxu se zobrazí Zastaveno.
$_SESSION['logged_in'], která se nastaví na 1 po úspěšném přihlášení. Měl jsem za to, že kombinací mechanismů se bezpečnost zvyšuje a mate případného útočníka. Aplikačka je psána pro vnitrofiremní účely, nemá ambice být _extra_ bezpečná, ale snažím se. I tak, pokud tedy znáš lepší mechanismus, jak redukovat přístup k webowé stránce pomocí přihlášení v klasickém HTML formuláři, a za pomoci PHP, sem s tím.
Měl jsem za to, že kombinací mechanismů se bezpečnost zvyšuje a mate případného útočníka.Ani moc ne. Vpodstatě pokud máš obrané mechanismy zařazené v sérii, tj. útočník musí překonat všechny, tak úroveň zabezpečení odpovídá nejsilnějšímu článku a ten zbytek jen trošku zdržuje. Pokud máš obrané mechanismy paralelně, tj. útočník musí překonat jen jeden (např. dva druhy přístupu k databázi), tak úroveň zabezpečení odpovídá tomu nejslabšímu článku a zbytek se neuplatní vůbec. Samozřejmě má smysl mít na začátku triviální obranu, která odfiltruje 90 % útočníků a sníží zátěž serveru, ale nemůžeš na to spoléhat. Dobrým příkladem je třeba kontrola formulářů javascriptem, což lze sice lehce obejít, ale odlehčí to serveru od chyb uživatelů.
Ano, tak to mám uděláno. Jenže skriptu se musí předat jméno souboru, který se má stáhnout (pomocí GET). Takže URL volaného skriptu vypadá nějak takto:
https://jmeno_serveru.cz/aplikace/stahni.php?soubor=xxxxxx.pdfJak zabráníš tomu, aby tuhle URL někdo zadal do browseru přímo? Jen tak, že v tom skriptu otestuješ, že uživatel je ověřen (to je uloženo v session) a že se tam tudíž dostal odkazem z aplikačky.
Co se týče použití cest v názvu souboru tak to snad nehrozí, mám definovánu proměnnou $docRoot = /var/lib/aplikace/dokumenty a ve výsledku skript volá něco jako
@readfile($docRoot . "/" . $_GET['soubor'])
basename($_GET['soubor']).
Tiskni
Sdílej: