I have a c# winform application that uses SQL 2005 Express. The application creates math and reading quizzes and is marketed to parents of school-aged children. The parents purchase and download SQL files containing quizzes from my website and install them in the application (which is installed on their child's computer).
I have two SQL security concerns:
(1) Some children may not want the quizzes to appear on their computer, so they may try to (a) delete the SQL database or (b) disable the application by changing values in the database.
It seems to me that anyone with SQL Server Management Studio Express can easily change the contents of the database.
Therefore, what can be done to prevent this (other than recommending to the parent that they do not let their children use an administrator account)?
(2) My only revenue will be the sale of the quizzes, so I want to protect this data from being copied and shared. How can I do this given (a) that the files need to be downloaded from my server to the child's computer and then installed and (b) and then once installed, they are just residing on the child's computer.
It seems to me that anyone with SQL Database Publishing Wizard can easily copy the contents of the database.
Is it possible to only allow my application to access the SQL database? Is it possible to restrict everyone else from accessing it (even people using Windows administrator accounts)?
Currently the install script for my application creates a new instance of the SQL 2005 Express server just for my application and it uses Windows Authentication.
I have read several SQL security posts here on Stackoverflow and elsewhere but I am not yet able to figure this out.