using System.Data.SQLite;
public static void Main()
string pathToDBFile = @"Data Source=WebSecurity.db";
SQLiteConnection conn = new SQLiteConnection(pathToDBFile);
public static void SusceptibleToSQLi(SQLiteConnection conn)
Console.WriteLine("Problem connecting to database file.");
SQLiteCommand cmd = conn.CreateCommand();
string expectedInput = "CA";
string maliciousInput = "CA' UNION SELECT ingredients from SecretRecipes;--";
string state = expectedInput;
cmd.CommandText = "SELECT BrandName FROM Competition WHERE State='" + state + "'";
SQLiteDataReader sqlDR = cmd.ExecuteReader();
Console.WriteLine(sqlDR.GetString(0));
public static void NotSusceptibleToSQLi(SQLiteConnection conn)
Console.WriteLine("Problem connecting to database file.");
SQLiteCommand cmd = conn.CreateCommand();
string expectedInput = "CA";
string maliciousInput = "CA' UNION SELECT ingredients from SecretRecipes;--";
string state = expectedInput;
cmd.CommandText = "SELECT BrandName FROM Competition WHERE State=@state";
cmd.Parameters.AddWithValue("@state", state);
SQLiteDataReader sqlDR = cmd.ExecuteReader();
Console.WriteLine(sqlDR.GetString(0));
public static void FixSQLi(SQLiteConnection conn)
Console.WriteLine("Problem connecting to database file.");
SQLiteCommand cmd = conn.CreateCommand();
string expectedDescription = "%" + "origin%";
string expectedCaneSugar = "1";
string maliciousCaneSugar = "1 UNION SELECT ingredients from SecretRecipes;--";
string sugar = expectedCaneSugar;
cmd.CommandText = "SELECT BrandName from Competition WHERE Description LIKE '" + expectedDescription + "' and CaneSugar=" + sugar;
SQLiteDataReader sqlDR = cmd.ExecuteReader();
Console.WriteLine(sqlDR.GetString(0));
public static async void DownloadDB()
string requestUrl = @"https://byu.box.com/shared/static/z3bh6fzgcsb3sdcymftuastk2hmgma0u.db";
using (WebClient client = new WebClient())
client.DownloadFile(requestUrl, "WebSecurity.db");