Che cosa è un modo sicuro per utilizzare i token PHP in un'applicazione C #

0

Ho un'app C # che sta inviando richieste di posta ae da uno script php. Ho una configurazione di autenticazione basata su token sul php, e ho la mia app C # che invia i token, tuttavia, anche con l'offuscamento, se qualcuno ottiene la mia stringa di token, averla lì in primo luogo è inutile. C'è un modo migliore per fare questo tipo di sicurezza? È impossibile considerare che qualcuno possa semplicemente deoffuscare la mia fonte?

    
posta ody sol 24.09.2018 - 01:00
fonte

1 risposta

2

Sembra che tu, come molti prima di te, stai cercando di far sì che solo un cliente "autorizzato" possa accedere alla tua API online (presumibilmente un servizio web). Questo, come sospettavi, è impossibile. È possibile prendere molte misure per rendere più difficile per qualcuno scrivere un client non autorizzato funzionale (offuscamento, crittografia dei token localmente, blocco dell'uso di un proxy di intercettazione utilizzando pinning del certificato, vari altri schemi DRM, ecc.) Ma alla fine di il giorno, se offri agli utenti un client funzionante, possono (e, se hanno motivo di preoccuparsi, ) duplicare tutto ciò che il client fa in modo che il tuo server ritenga che sia legittimo.

La domanda più grande è: perché ti importa? Di solito ci sono solo alcuni motivi per cui le persone cercano di impedire i client non autorizzati:

  1. Stanno dando troppa fiducia al cliente. Un esempio potrebbe essere un gioco online in cui il client dice al server se l'utente ha vinto o meno, invece del client che dice al server cosa l'utente ha fatto e il server che decide chi ha vinto. Non fidarti mai del cliente.
  2. Il servizio è costoso da usare in qualche modo (monetariamente, dal punto di vista computazionale, dal punto di vista dell'archiviazione, qualunque sia) e vogliono limitare la frequenza con cui le richieste possono essere fatte. L'approccio corretto qui è quello di richiedere l'autenticazione dell'utente, piuttosto che il client, e caricare l'utente o limitare il numero di richieste che possono fare.
  3. Non vogliono che le persone automatizzino l'interazione con il servizio, ad esempio perché è un gioco con un comportamento ripetitivo e non vogliono che le persone scrivano bot per questo. In tal caso, difficile. C'è solo così tanto che si può fare contro questo, e di solito si tratta di una sorta di revisione umana dei replay o qualcosa del genere per rilevare gli imbroglioni.
  4. Vogliono supportare solo utenti specifici (ad esempio, non vogliono disturbare con un'app Linux) e sono preoccupati che se qualcuno fa il porting della loro app verranno bombardati con richieste di supporto per codice che non hanno Scrivi. Onestamente, non c'è modo di aggirare questo (a parte il marchio del tuo nome di servizio e l'uso di minacce legali contro chiunque tenti di pubblicare qualcosa come te, ma questo non impedisce loro di pubblicare qualcosa che è "un client non ufficiale di YourService ™) ").

Se è qualcos'altro, per favore aggiungi le informazioni rilevanti alla tua domanda e io le parlerò. Nel complesso, tuttavia, non può essere fatto veramente. Non puoi dare a qualcuno la chiave di una porta ma impedirgli di copiarlo o condividerlo.

    
risposta data 24.09.2018 - 03:59
fonte

Leggi altre domande sui tag