Prodotto del vivaio delPescara, rimase nel capoluogo adriatico per 3 stagioni dal 1994 al 1997. Ebbe un esordio fortunoso inSerie B, quando da terzo portiere del Pescara (giocava nellaPrimavera) fu costretto a debuttare per l'infortunio di entrambi i portieri della prima squadra e sul campo neutro diFrancavilla al Mare parò un rigore aChristian Vieri, che a quel tempo militava nelVenezia.
Nelcampionato seguente, stante iforfait di Peruzzi e di Rampulla, il 6 dicembre 1998 De Sanctis debuttò in bianconero e inSerie A, nella partita Juventus-Lazio (0-1).[11] Giocò altre 3 volte, 2 in campionato e una inCoppa Italia, totalizzando nel suo biennio a Torino 4 gare e 2 reti subìte.
Nel 1999 passò all'Udinese, collezionando 8 presenze il primo anno e 3 nel campionato successivo. Nell'estate del 2000 vinse laCoppa Intertoto. Nel 2001-02 giocò da titolare le ultime 10 partite stagionali e, a partire dal 2002, a 25 anni, conquistò il ruolo di portiere titolare della squadra, subentrando aLuigi Turci. Per le successive cinque stagioni fu il primo portiere dell'Udinese, con la quale ha giocato 194 partite diSerie A in 8 stagioni, oltre ad alcuni incontri diCoppa UEFA e diChampions League.
Nel luglio 2007 chiese d'ufficio la rescissione del contratto allaFIFA, avvalendosi della norma secondo cui un calciatore che ha superato i 29 anni può richiedere l'interruzione del contratto con una squadra pagando un indennizzo basso. Firmò poi con ilSiviglia, dove fu il portiere di riserva.
Rientrato al Siviglia al termine del prestito, il 24 luglio 2009, a 32 anni, fu acquistato a titolo definitivo per 1,7 milioni dieuro dalNapoli.[14][15] Esordì in azzurro il 16 agosto 2009 nel match diCoppa Italia contro laSalernitana, terminato 3-0 per i partenopei.[16]. Lungo la stagione, dopo qualche incertezza iniziale, si confermò un portiere affidabile, parando 3 rigori e mantenendo la porta inviolata per 588 minuti in 6 partite, perdendo l'imbattibilità per la rete diAntonio Di Natale inUdinese-Napoli (3-1 per i padroni di casa).[17]Grazie anche al grande fair play dimostrato nel corso del campionato, vinse il "Pallone d'Argento"[18][19].
Nellastagione successiva si confermò titolare, ottenendo il primato assoluto di imbattibilità casalinga partenopea: con 799 minuti, superò il record diLuciano Castellini (763 minuti) che resisteva dal torneo1981-1982.[20] La sua imbattibilità casalinga fu interrotta il 20 marzo 2011 daAcquafresca, che realizzò al 56' la rete del momentaneo 1-1 di Napoli-Cagliari.[21] Al termine del campionato 2010-2011, conclusosi con la qualificazione del Napoli inChampions League, fece un altro record: fu l'unico calciatore dellaSerie A ad essere stato sempre presente in campo sia nella stagione conclusa che in quella precedente, disputando 76 partite consecutive da titolare senza sostituzioni.[22]
Il 7 giugno 2011 vinse ilTrofeo Rocky Marciano, titolo di miglior sportivo abruzzese dell'anno.[23] In Champions League contribuì alla qualificazione del Napoli agli ottavi di finale. In Napoli-Bayern Monaco del 18 ottobre 2011, finita 1-1, parò un rigore aGómez. A fine stagione, il 20 maggio 2012 vinse laCoppa Italia.
Il 25 luglio 2013, a 36 anni, passò a titolo definitivo allaRoma per 500 000 euro.[24] Il 25 agosto seguente fece il suo esordio con i giallorossi nella gara dicampionatoLivorno-Roma (0-2).[25] Con la Roma riuscì a battere il record di 9 vittorie consecutive a inizio stagione, subendo appena una rete contro il Parma e migliorando il record a 10 vittorie consecutive.
Nella stagione 2014-2015, chiusa con 35 presenze e 26 gol subiti in campionato, poté vantare una percentuale tra i tiri ricevuti e le reti subite pari al 76%.[26]
Nella suaterza stagione alla Roma perse il posto da titolare a favore del portiere polaccoWojciech Szczęsny, arrivato in prestito dall'Arsenal. A fine stagione, non avendo trovato un accordo con la società giallorossa per il rinnovo del contratto, rimase svincolato.
Il 13 luglio 2016, a 39 anni, firmò un contratto annuale con ilMonaco.[27] Il 6 dicembre successivo esordì con i monegaschi da titolare inChampions League, nella gara persa per 3-0 contro ilBayer Leverkusen, diventando così il primo italiano ad avere giocato nella massima competizione continentale con cinque club differenti (Udinese, Siviglia, Napoli, Roma e, appunto, Monaco).[28] Il 26 aprile 2017 giocò da titolare nella semifinale valida per laCoppa di Francia, persa per 5-0 contro ilPSG.[29] Si ritirò al termine della stagione, dopo aver vinto il campionato da secondo portiere.
Il 30 marzo 2005, a 28 anni, esordì innazionale nella partita amichevole Italia-Islanda (0-0) disputata aPadova.
L'anno successivo venne inserito daMarcello Lippi tra i pre-convocati per ilcampionato del mondo 2006, poi vinto dalla nazionale italiana, ma non entrò nella lista dei 23 convocati.
Dopo un anno di assenza, tornò in Nazionale il 4 agosto 2011, quando ricevette la prima convocazione della gestione diCesare Prandelli in occasione dell'amichevole di Bari contro laSpagna,[31] tornando poi in campo l'11 ottobre 2011 nella partita diPescara contro l'Irlanda del Nord, a quasi tre anni dall'ultima presenza in azzurro.
Infine, a 35 anni, venne convocato per ilcampionato d'Europa 2012, questa volta come secondo portiere.[32] La nazionale italiana riuscì ad arrivare in finale, ma il 1º luglio perse 4-0 contro la Spagna.
Il 26 marzo 2013, giorno del suo 36º compleanno, annunciò l'addio alla maglia azzurra in occasione della partita controMalta.[33]
Il 7 agosto 2017 viene nominatoteam manager dellaRoma.[34][35] Nel corso dell'autunno inizia a seguire il corso speciale per allenatoriUEFA, che abilita all'allenamento di tutte le formazioni giovanili, alle prime squadre fino allaSerie C, e alla posizione di allenatore in seconda inSerie B eSerie A;[36] il successivo 15 dicembre consegue la licenza.[37] Il 3 dicembre 2018 supera invece l'esame finale da direttore sportivo aCoverciano.[38] Nell'estate del 2020 sostituisce provvisoriamenteGianluca Petrachi come direttore sportivo[39] e, a settembre, ottiene l'abilitazione per Allenatore Professionista di Prima Categoria - Uefa Pro.[40] Nell’estate del 2021 diventa poi il vice del nuovo ds Tiago Pinto e si occuperà dei contratti dei ragazzi del vivaio, della transizione dei ragazzi dalla Primavera alla prima squadra, della partnership con club stranieri e del mercato dei giocatori che non rientrano più nei piani della Roma.[41] Il 28 febbraio 2022, dopo aver trascorso cinque anni da dirigente della squadra capitolina e tre anni da calciatore, risolve il contratto che lo legava al club giallorosso.[42]
Il 9 giugno 2022 viene nominato direttore sportivo dellaSalernitana in sostituzione diWalter Sabatini.[43] Il 22 dicembre 2023 viene annunciata sul sito ufficiale del club la rescissione del suo contratto dopo il ritorno nei ranghi dirigenziali dello stesso Sabatini.[44]
Il 7 giugno 2024, De Sanctis viene nominato direttore sportivo delPalermo, in Serie B, subentrando aLeandro Rinaudo.[45][46] Il 3 gennaio 2025 viene sollevato dall'incarico dalla società rosanero.[47]