Tak tak, pokud je třeba zabránit přístupu do DB, tak buď je třeba přistupovat přes nějaký aplikační server, který bude jediný mít přístup DB (resp. ti klientské programy mít přístup nebudou) a klientské programy budou komunikovat jen s tím aplikačním serverem. Ten pak ověřuje veškeré přístupy a např. uživateli nedovolí vylistovat hesla všech uživatelů. Omezení bych rozhodně doporučoval dělat whitelistem, tedy povolit jen to, co je potřeba - neboli implementovat metody, které budou dělat to, co klient potřebuje. A nebo tuto aplikační logiku nacpat přímo DB (což bych osobně ve většině případů moc nedoporučoval - zvláště v případě, že nejde o nějakou vnitropodnikovou aplikaci, kde jsou uživatelé pod kontrolou).
V opačném případě je hacking hodně snadný. Pak samozřejmě záleží na tom:
- jaké náklady jsou potřeba pro rozumné zabezpečení (je nesmysl investovat milion Kč do zabezpečení, když hrozí max. škoda 100 Kč)
- jakou motivaci mají uživatelé něco hackovat (čím větší prospěch z toho bude mít, tím víc se bude snažit)
- co hrozí v případě, že to někdo hackne (když získá max. např. tajenku křížovky, tak se asi toho zase tak moc neděje)
Na znalostech uživatelů moc nezáleží, protože spousta lidí minimálně zná někoho, kdo to zvládne levou zadní a poradí, jak na to. Případně se poptá někde na webovém fóru.
Jediná výjimka by byla, pokud by uživatel neměl plný přístup k počítači, kde běží ta klientská aplikace. Tak by se hackingu dalo tak nějak bránit, ale stejně by to představovalo velké riziko.