Первое, что вы должны сделать, это сделать внедрение SQL невозможным. Насколько я понимаю, такой подход не приведет к SQL-инъекции. Это называется «параметризованными входами».
string commandText = "UPDATE Sales.Store SET Demographics = @demographics "
+ "WHERE CustomerID = @ID;";
SqlCommand command = new SqlCommand(commandText, connection);
command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = customerID;
// Use AddWithValue to assign Demographics.
// SQL Server will implicitly convert strings into XML.
command.Parameters.AddWithValue("@demographics", demoXml);
Второй подход - сделать так, чтобы GUID не передавался через URL. Это делает его чрезвычайно простым для изменения, поэтому вы можете передать это значение через POST вместо GET. Это не защитит от внедрения SQL-кода, но сделает его немного более сложным и поможет обеспечить целостность данных.
Дополнительная информация: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx