Все — никак. Самый лучший способ изначально организовать логику работы так, чтобы все обработка переменных происходила по одинаковым принципам во всех модулях.
Когда на каждой странице своя проверка, очень велика вероятность, что что-то забудете и пропустите.
Также, думаю, не само собой разумеющееся, что для обращения к БД не стоит работать напрямую, а использовать специальные фрейморки, в которых заложен дополнительный слой проверок. Например PDO или аналоги.
Для поиска уязвимостей есть специальные сканеры, например Acunetix, havij… вот тут неплохой обзор
habrahabr.ru/post/125317/
Однако ни один сканер не найдет все уязвимости, ибо они могут быть совершенно не очевидными.
К примеру, даже если вы сюда воткнете проверку, это не защитит от уязвимости при включенных register_globals
if($_REQUEST[xid])
$id = (int)$_REQUEST[xid];
ибо переменную id можно просто передать в параметрах, а про xid просто напросто «забыть». Тогда в $id уже можно будет передать что угодно.
Т.е. правильный код в данном случае будет каким-то таким
if (!isset($_REQUEST[xid])) {die(); }
$id = (int)$_REQUEST[xid];