FlexFellovic 0 Odesláno: 3. Prosinec, 2012 Share Odesláno: 3. Prosinec, 2012 Sql injection je druh napadení webu, kdy může útočník přes nezabezpečené formuláře posílat příkazy databázi, kteár je poté vykoná.Webová aplikace neochráněná proti SQL Injection je před úžotčníkem rovnou odsouzená k "smrti. Protože útočník se pomocé této díry může nejen přihlásit jako jakýkoli uživatel , ale také může smazat celou databázi Takže to by bylo k úvodu na SQL injection.. tady vám dám jednoduchou ukázku SQL Injeciton útoku : Pokud webová aplikace nepodporuje při přihlašování hashování hesel nebo odstranění nebezpečných řetezců pomocí php funkce mysql_real_escape_string ... tudíž stačí zadat libovolné přihlašovací jméno a jako heslo vyplnit např.. x' or 'a' = 'a Nezabezpečený sql dotaz teda bude vypadat takto : ELECT * FROM fusion_users WHERE user_name='FlexFellovic' AND user_password='x' or 'a' = 'a'; Při tomto dotazu se PHP ptá MySQL databáze, jestli existuje uživatel s tímto jménem a heslem. útočník ovšem přidal podmínku že 'a' = 'a' , což je logicky vždy pravdivé a proto dotaz vrátí pravdivou hodnotu a přihlásí vás. Horší útok je ovšem, pokud přes nezabezpečený script útočník maže web. Pokud tedy například do políčka hesla přidá následující : '; DROP TABLE fusion_users; -- (místo fusion_users může být jakákoliv tabulka v mysql) , SQL dotaz se vykoná a výsledek je ten, že sice není útočník přihlášen jako administrátor, ale smaže tabulku obsahující informace o uživatelích. Ochrana proti tomuto útoku Nejjednodušší ochranou, jak jsem již psal, je použití funkce mysql_real_escape_string . Tato funkce je přizpůsobena tak, aby odstranila z dat veškerý nebezpečný obsah. Zabezpečený SQL dotaz v PHP (PHP-Fusionu) tedy poté vypadá například takto: $result = dbquery("INSERT INTO ".DB_BLAH." VALUES (NULL, ".mysql_real_escape_string($uzivatelsky_vstup).")"); Další dobrou ochranou je omezit práva pro MySQL uživatele na změny, které používáte. Pokud tedy na webu nikde nepoužíváte mazání tabulek, je dobré MySQL uživateli tuto funkci zakázat a tak zabezpečit web proti smazání DB při útoku. stavěno pro php fusion ! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now