Вы можете использовать AntiForgeryToken с MVC3 и Ajax.
Вот как я это делаю. (конечно, это не надежно, но добавляет еще один уровень безопасности)
На ваш взгляд, в любом месте, вывод:
@Html.AntiForgeryToken()
И в ваш Ajax-вызов включите это значение в переменные записи, такие как:
$.post("/Controller/Action/",
{ 'id': var_id, '__RequestVerificationToken': $("input[name='__RequestVerificationToken']").val() },
function (data) { /* handle request */ });
А в вашем контроллере:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Action(int id) {..}
Кроме того, вы также можете проверить ссылающийся хост и отклонить любой хост, который не соответствует вашему домену. Это может быть подделано, но опять же, это просто еще один слой для добавления.