Zabezpečení v LINQ to SQL
Bezpečnostní rizika jsou vždy přítomna, když se připojujete k databázi. I když LINQ to SQL může zahrnovat některé nové způsoby práce s daty v SQL Serveru, neposkytuje žádné další mechanismy zabezpečení.
Řízení přístupu a ověřování
LINQ to SQL nemá vlastní uživatelský model ani ověřovací mechanismy. Pomocí zabezpečení SQL Serveru můžete řídit přístup k databázi, databázovým tabulkám, zobrazením a uloženým procedur, které jsou mapovány na objektový model. Udělte uživatelům minimální požadovaný přístup a pro ověřování uživatelů potřebujete silná hesla.
Informace o mapování a schématu
Informace o mapování typu SQL-CLR a schématu databáze v objektovém modelu nebo externím souboru mapování jsou k dispozici pro všechny s přístupem k těmto souborům v systému souborů. Předpokládejme, že informace o schématu budou k dispozici všem uživatelům, kteří mají přístup k objektovém modelu nebo externímu souboru mapování. Pokud chcete zabránit rozšířenému přístupu k informacím o schématu, použijte mechanismy zabezpečení souborů k zabezpečení zdrojových souborů a souborů mapování.
Připojovací řetězce
Používání hesel v připojovací řetězec by se mělo vyhnout, kdykoli je to možné. Nejen připojovací řetězec bezpečnostní riziko ve svém vlastním právu, ale připojovací řetězec může být také přidán v prostém textu do objektového modelu nebo externího souboru mapování při použití nástroje příkazového řádku Návrhář relací objektů nebo SQLMetal. Každému, kdo má přístup k objektovém modelu nebo externímu souboru mapování prostřednictvím systému souborů, může zobrazit heslo připojení (pokud je součástí připojovací řetězec).
Pokud chcete taková rizika minimalizovat, použijte integrované zabezpečení k vytvoření důvěryhodného připojení k SQL Serveru. Pomocí tohoto přístupu nemusíte ukládat heslo do připojovací řetězec. Další informace naleznete v tématu Zabezpečení SYSTÉMU SQL Server.
Bez integrovaného zabezpečení bude v připojovací řetězec potřeba vymazat textové heslo. Nejlepší způsob, jak zabezpečit připojovací řetězec v rostoucím pořadí rizik, je následující:
Používejte integrované zabezpečení.
Zabezpečení připojovací řetězec pomocí hesel a minimalizace předávání připojovací řetězec
System.Data.SqlClient.SqlConnection Místo připojovací řetězec použijte třídu, protože omezuje dobu expozice. LinQ to SQL System.Data.Linq.DataContext třídy lze vytvořit instanci pomocí SqlConnection.
Minimalizujte životnost a dotykové body pro všechny připojovací řetězec.