Abbiamo un sito web, in cui ogni utente deve accedere per accedere ad un'area privata. All'interno dell'area privata, ci sono alcune informazioni sull'utente, un profilo, comprese alcune informazioni sensibili (indirizzo di casa, coordinate bancarie, ecc.)
Naturalmente, seguiamo le best practice qui (hashing strong, SSL con gli algoritmi corretti, verifica password deboli, ecc ...).
Offriamo inoltre una base API su OAuth per terze parti. In questo modo l'utente sa a cosa può accedere un'applicazione registrata, l'applicazione non deve memorizzare le credenziali dell'utente, possiamo limitare ciò che l'applicazione ottiene ... tutti i soliti vantaggi. Ad esempio, l'API può leggere le informazioni del profilo, ma le informazioni sensibili vengono cancellate o omesse.
Il problema è: abbiamo un'applicazione di terze parti che ha deciso che l'utilizzo dell'API non era valido; al contrario, richiede le credenziali, le archivia (in testo in chiaro ...), quindi autentica utilizzando un POST. E legge le informazioni dell'utente che eseguono il raschia schermo. In realtà quindi utilizza solo le informazioni "pubbliche", ma potrebbe accedere anche a quelle informazioni sensibili che vorremmo non divulgare.
Non sono particolarmente preoccupato che l'app perderà le informazioni dell'utente (penso che siano state fatte in questo modo perché sono sciatte / pigre, non dannose), ma comunque questo è un comportamento meno desiderabile. E mi ha fatto pensare: c'è un modo per gestire questa situazione alla radice?
Voglio affrontare il problema nel modo più efficace e sto cominciando a chiedermi: c'è un modo per consentire all'utente di accedere SOLO attraverso la tua pagina? Per evitare che qualcun altro si autentichi usando solo un POST? Per quanto ne sappia, puoi renderlo difficile da fare (usare id una tantum nella pagina / intestazioni, usando l'hashing lato client (Javascript), ecc.) Ma non c'è modo di essere sicuro al 100% del post proviene da "la tua pagina". Ma non sono un esperto di sicurezza, quindi potrei mancare qualcosa. E in ogni caso, qual è il modo migliore per mitigare il problema, rendendolo poco pratico (ma con poco o nessun onere per l'utente - nessun captcha - che comunque non risolverà il problema)?
EDIT: per essere chiari: non sto parlando di soluzioni per "prevenire" screen-scraping. Abbiamo già delle attenuazioni per renderlo difficile (e altri per renderlo ancora più difficile in futuro) che farà desistere questa particolare app. Sto parlando della procedura di accesso: cosa puoi fare per assicurarti che il nome utente e la password provengano dal tuo modulo? Uno dei "punti vendita" di OAuth è che date le vostre credenziali a qualcuno (google, twitter) di cui vi fidate; in effetti, si viene reindirizzati a un modulo nel dominio "trusted". Oltre a guardare l'url, la provenienza delle credenziali viene forzata in qualche modo? Se sì, come?