Skip Ribbon Commands
Skip to main content

Ondrej Sevecek's Blog

:

Engineering and troubleshooting by Directory Master!
Ondrej Sevecek's Blog > Posts > Jak a proč SharePoint nezobrazuje obsah prostých HTM a HTML souborů, ale nabízí jejich uložení
únor 04
Jak a proč SharePoint nezobrazuje obsah prostých HTM a HTML souborů, ale nabízí jejich uložení

Člověka by to mohlo zarazit. Uložíte si do dokumentové knihovny (document library) HTM (nebo HTML) soubor a když na něho kliknete, tak místo aby se zobrazil, tak vám to nabídne jeho uložení. No ták, vždyť to je web server, tak proč ty obstrukce?

To je bezpečnost. Prostě HTML soubor si může do knihovny uložit kdokoliv, kdo tam může přizpívat (contribute). A když by do takového soubory vrazil nějaké skripty, je to krásná cesta ke cross-site-scripting útokům. Bezpečnostní zóna SharePoint sajty je obvykle mnohem vyšší (tedy nižší zabezpečení), než u ostatních webů. Ideální je dávat SharePoint do Local Intranet, protože tam jede naplno Kerberos. a samozřejmě ActiveX integrace s Office.

I ty skripty v HTML by mohly tedy něco způsobit, spustit něco nežádoucího, nebo uživatele někam přesměrovat a odeslat bůhví co do internetu. Takže prostě výchozí bezpečnost. Jestli ten uživatel to HTML opravdu chce, tak si ho bude muset stáhnout a pustit z lokálu.

Mimochodem, to stejné platí pro PDF soubory. Místo aby se to otevíralo rovnou do Adobe Reader, nebo jiného prohlížeče, tak si ho musíte nejprve někam uložit. Otrava pro uživatele, ale bezpečnost. Adobe Reader je známý svými ultrakrutými exploity, takže se není čemu divit.

Jak to SharePoint dělá, že přinutí prohlížeč, aby ten soubor uložil a ne rovnou renderoval?

Když na takový soubor kliknete, HTTP odpověď od web serveru (HTTP resonse) obsahuje korektně hlavičku content-type s hodnotou text/html (v případě PDF, pokud to tedy máte vůbec na SharePoint nastaveno, by tam bylo application/pdf). To je dobře.

Jenže je tam navíc přibalena hlavička X-Download-Options s hodnotou noopen. Takže prohlížeče, které tuto hlavičku podporují, prostě nabízí uložení, místo renderování nebo otevření v klientské aplikaci.

Jak povolím, aby se HTM a HTML soubory renderovaly přímo v prohlížeči?

Nešlo by to přepnout? Jasně. Musíte jenom pomocí PowerShell na SharePoint serveru tyto soubory "povolit" - tedy ve skutečnosti pro tyto soubory vypnout onu přídavnou hlavičku X-Download-Options. Následovně, obě přípony souborů, jak HTM tak i HTML mají jen jeden společný MIME type (content-type):

$webApp = Get-SPWebApplication http://mywebapplication.gopas.cz

# list the current allowed content types
$webApp.AllowedInlineDownloadedMimeTypes

# add the text/html mime type in the allowed list
$webApp.AllowedInlineDownloadedMimeTypes.Add('text/html')
$webApp.Update()

# you do NOT need to restart IIS in order to apply the settings.

Jak jsem už říkal, pro PDF byste tam dali application/pdf.

Existuje ještě jedna, hojně se vyskytující, metoda. Samozřejmě krajně zbytečná a nebezpečná. Můžete taky jít rovnou do Manage Web Applications, vybrat si vaši webovou aplikaci, kliknout na čudlík General Settings a tam přepnout Browser File Handling z výchozí hodnoty Strict na hodnotu Permissive.

Jasně, jenže tím to přepnete pro všechny typy souborů. Jasně. Když mě něco nejede, taky dávám všechny účty do Domain Admins a mám po starostech. Takže tak :-)

Comments

Re: Jak a proč SharePoint nezobrazuje obsah prostých HTM a HTML souborů, ale nabízí jejich uložení

ještě poznámečka. Každá knihovna i seznam má taky (musíte použít PowerShell) property BrowserFileHandling. Mohlo by se zdát, že tím by se to dalo povolit jen pro nějakou knihovnu. Nedalo. Na knihovně a listu se to dá akorát tak přitvrdit. Takže kdybyste měli celou webovou aplikaci nastavenu na Permissive, tak můžete jednu knihovnu přitvrdit na Strict. Ale to stejně není dobrá cesta. Prostě ty typy jednoduše vyjmenujte a uvědomte si, co si tím způsobujete.
ondass on 4.2.2014 16:47

Add Comment

Sorry comments are disable due to the constant load of spam *


Omlouvám se, ale příval spamu nelze kontrolovat, takže mi prosím pošlete email, pokud máte nějaký dotaz, nebo připomínku.

Title


Pole Title nemusíte vyplňovat, doplní se to samo na stejnou hodnotu jako je nadpis článku.

Author *


Pole Author nesmí být stejné jako pole Title! Mám to tu jako ochranu proti spamu. Roboti to nevyplní dobře :-)

Body *


Email


Emailová adresa, pokud na ni chcete ode mě dostat odpověď. Nikdo jiný než já vaši emailovou adresu neuvidí.

Attachments