Я думаю, что намного легче проверить использование regex и определение, которое символы позволяются, вместо того, чтобы пытаться проверить на все неверные символы. См. эти ссылки: http://www.c-sharpcorner.com/UploadFile/prasad_1/RegExpPSD12062005021717AM/RegExpPSD.aspx http://www.windowsdevcenter.com/pub/a/oreilly/windows/news/csharp_0101.html
кроме того, сделайте поиск "редактора регулярного выражения" s, они помогают много. Существуют некоторые, вокруг которых даже производит код в c# для Вас.
Root является наиболее безопасным
Использование root предотвратит захват вашего сервера apache любого вредоносного ПО (люди говорят, что linux не может получить вирусы, но это может быть и хорошо, если он безопасен). потому что root - это отдельная учетная запись с экстремальными привилегиями. Короче говоря, просто держите его в корне.