REST API Security Guide

osaaminen REST API-rajapintojen turvaamisesta on yhtä tärkeää kuin itse API: n kirjoittaminen. Enimmäkseen loput sovellusliittymät ovat HTTP-protokollapohjaisia, ja kuka tahansa käyttäjä, jolla on internet-yhteys, voi käyttää niitä, ja niin voivat myös huonot käyttäjät. On erittäin tärkeää kirjoittaa suojatut API: t liiketoiminnan suojaamiseksi.

ennen kuin ryhdymme turvaamaan levollisia sovellusliittymiä, ymmärtäkäämme, mitkä kaikki ovat vaihtoehtomme kehittäjinä? Mikä sopii hyvin käyttötapaukseemme?

Table of Contents1. Authentication vs. Authorization2. Four Ways to Secure RESTful Web Services- BASIC Authentication- DIGEST Authentication- Client CERT Authentication- OAUTH2 API Keys3. RESTful Web Services Security Implementations- Using SecurityContext- Using Annotations4. Best Practices

ero autentikoinnin vs. valtuutus

ennen kuin hypätään pääkeskusteluun, tehdään faktat suoriksi siitä, mikä on autentikointia ja mikä valtuutusta.

selkokielisessä englannin kielessä autentikointi on prosessi, jossa varmistetaan, että ”onko käyttäjä todella joku, joka hän väittää olevansa”. Teknisesti, se on prosessi kirjautuminen järjestelmään käyttäjätunnus / salasana tai muita vastaavia mekanismeja, kuten sormenjälki skannaus, security token, turvakysymyksiä tai SAML token vastaanotettu SSO kirjautuminen. On oltava jotain, joka voi tunnistaa käyttäjän muista.

kun käyttäjä on järjestelmän sisällä, valtuutus viittaa sääntöihin, jotka määrittävät ”mitä käyttäjä saa tehdä” ja mitä hän ei ole esim.normaali käyttäjä voi lähettää viestin mihin tahansa julkiseen ryhmään, mutta vain editor-roolissa olevat käyttäjät voivat poistaa jotain. Valtuutus nähdään usein sekä järjestelmän ylläpitäjän aloittavana käyttöoikeuksien määrittämisenä että jo määritettyjen käyttöoikeusarvojen tarkistamisena, kun käyttäjä on pääsemässä järjestelmään.

kun turvataan rauhalliset verkkopalvelut, pitää huolehtia molemmista tekijöistä. Nämä kaksi käsitettä ovat täysin ortogonaalisia ja riippumattomia, mutta molemmat ovat keskeisiä tietoturvasuunnittelussa, ja epäonnistuminen saada jompikumpi oikein lisäävät vaarantuneen järjestelmän mahdollisuuksia..

neljä tapaa turvata rauhalliset verkkopalvelut

on useita tapoja turvata levollinen API Javassa. Käydään läpi 4 suosituinta valintaa:

2,1. Perustodennus

se on yksinkertaisin kaikista tekniikoista ja luultavasti myös käytetyin. Käytät kirjautumis – / salasanalomakkeita-se on vain Perustodennus. Syötät käyttäjätunnuksesi ja salasanasi ja lähetät lomakkeen palvelimelle, ja sovellus tunnistaa sinut käyttäjäksi – sinulla on oikeus käyttää järjestelmää – muuten saat virheen.

tämän tietoturvatoteutuksen suurin ongelma on se, että tunnistetiedot etenevät selkeällä tavalla asiakkaalta palvelimelle. Valtakirjat on vain koodattu Base64: llä kauttakulussa, mutta niitä ei ole salattu tai tiivistetty millään tavalla. Näin kuka tahansa Nuuskija pystyi lukemaan lähetetyt paketit verkon yli.

HTTPS on siis tyypillisesti parempi vaihtoehto tai sitä käytetään perustodennuksen yhteydessä, jolloin keskustelu WWW-palvelimen kanssa on täysin salattua. Parasta on se, että kukaan ei voi edes ulkoa arvailla, että peruskauraa tapahtuu.

2.2. DIGEST-todennus

tässä todennusmenetelmässä käytetään hajautusalgoritmeja, jotka salaavat käyttäjän syöttämän salasanan (jota kutsutaan salasanahashiksi) ennen sen lähettämistä palvelimelle. Tämä tietenkin tekee siitä paljon turvallisemman kuin perustodennusmenetelmä, jossa käyttäjän salasana kulkee selkotekstinä, jonka sieppaaja voi helposti lukea.

Lue Lisää: Luo salattuja salasanoja

myös Javassa on monia tällaisia tiivistysalgoritmeja, jotka voivat osoittautua todella tehokkaiksi salasanojen suojaamisessa, kuten MD5, SHA, BCrypt, SCrypt ja Pbkdf2hmacsha1-algoritmeilla.

muista, että kun tämä salasana on luotu ja tallennettu tietokantaan, et voi muuntaa sitä takaisin alkuperäiseksi salasanaksi. Joka kerta, kun käyttäjä kirjautuu sovellukseen, sinun täytyy uudistaa salasana hash uudelleen, ja ottelu hash tallennettu tietokantaan. Niin, jos käyttäjä unohti salasanansa, sinun täytyy lähettää hänelle väliaikainen salasana ja pyytää häntä vaihtamaan sen hänen uusi salasana. Se on yleinen trendi.

2.3. Client CERT Authentication

tämä on mekanismi, jossa palvelimen ja asiakkaan välille luodaan luottamussopimus varmenteiden avulla. Ne on allekirjoitettava virastolla, joka on perustettu varmistamaan, että todentamista varten esitetty varmenne on laillinen eli ns.

kun asiakas yrittää käyttää suojattua resurssia, se ei anna käyttäjätunnusta tai salasanaa, vaan esittää varmenteen palvelimelle. Varmenne sisältää yksilöllisen yksityisen ja julkisen avainparin lisäksi käyttäjätiedot todennusta varten, mukaan lukien suojaustunnukset. Tämän jälkeen palvelin määrittää, onko käyttäjä oikeutettu CA: n kautta. Lisäksi sen on tarkistettava, onko käyttäjällä pääsy resurssiin. Tämän mekanismin on käytettävä HTTPS: tä viestintäprotokollana, koska meillä ei ole suojattua kanavaa, joka estäisi ketään varastamasta asiakkaan henkilöllisyyttä.

virallisista oracle docs-dokumenteista löytyy täydellinen opetusohjelma tietoturvavarmenteen tuottamiseen.

2.4. OAUTH2 API Keys

jos olet joskus kehittänyt sovelluksia, jotka ovat vuorovaikutuksessa muiden sovellusten kanssa pilvipalvelussa, esim. facebook-integraatio tai twitter-todennus jne. sitten olet jo käyttänyt tätä. Ne vaativat sinua tarjoamaan API avain ja API salaisuus oikein tunnistaa sinut. Nämä API avain ja secret ovat satunnaisia koodattu merkkijono, joka on mahdotonta arvata.

jotta ymmärtäisit, miten se toimii, oletetaan, että käytät Flickr-sovellusta (photo sharing application) ja haluat lähettää joitakin valokuviasi sen REST API: n avulla. Voit rakentaa pyynnön kuten dokumentoitu Flickr docs, sitten lähettää sen.

pyynnön saatuaan Flickr todentaa käyttäjän lukemalla API-avaimen tiedot käyttäjälle kuuluvalla salaisella avaimella. Kun nämä validoinnit ovat onnistuneet, palvelin toimittaa vastauksen asiakkaalle. Näin, saamme vastauksen Kaikki kuvat, jotka on äskettäin lähetetty Flickr.

kuten huomaat, tällä tavalla voit helposti luoda sovelluksia palveluntarjoajan API: n avulla. Lisäksi palveluntarjoaja sallii sinun todentaa ja käyttää julkisia tietoja.

jos joku alkaa epäkunnioittaa sopimuksia esim.lähettämällä roskaliikennettä tai rikkomalla käytäntöä, palveluntarjoaja poistaa API-avaimen ja estää Sovellusliittymiensä väärinkäytön.

REST API-Tietoturvatoteutukset

edellä mainittujen käsitteiden lisäksi sinun on yleensä turvattava levolliset API-Sovellusliittymäsi yrityksessäsi alla olevilla menetelmillä.

3.1. Jax-Rs SecurityContext-instanssi

javax.ws.rs.core.SecurityContext-liitäntä tarjoaa pääsyn tietoturvaan liittyviin tietoihin pyyntöä varten ja on hyvin samankaltainen kuin javax.servlet.http.HttpServletRequest.

pääset Securitycontekstiin pistämällä instanssin luokkakenttään, setter-menetelmään tai method-parametriin käyttämällä javax.ws.rs.core.Context – merkintää esim.alla koodia sc.isUserInRole() käytetään käyttäjän valtuutuksen tarkistamiseen.

3.2. JAR-RS-merkinnät menetelmätason valtuutukselle

tätä tekniikkaa käytetään laajalti yrityssovelluksissa, ja sitä käytetään todennetun käytetyn roolin ja vastuun todentamiseen – mihin tahansa tiettyyn operaatioon. JAX-RS tarjoaa tähän tarkoitukseen seuraavat merkinnät.

  • @PermitAll
  • @DenyAll
  • @RolesAllowed

esimerkkinä voidaan käyttää huomautusta:

Lue lisää : Jax-RS authentication and authorization example

REST API Security Best Practices

Let ’ s note down some important points while designing security for your RESTful web services.

  1. käytä vain HTTPS-protokollaa niin, että koko viestisi on aina salattu.
  2. Älä koskaan lähetä auth-tunnuksia tai API-avaimia kyselynä param. Ne näkyvät URL ja voidaan kirjata tai seurata helposti.
  3. Käytä aina kovinta salaustasoa. Se auttaa saamaan lisää itseluottamusta.
  4. rauhallisten verkkopalvelujen paljastamien resurssien osalta on tärkeää varmistaa, että kaikki PUT -, POST-ja DELETE-pyynnöt on suojattu Ristipyyntöjen väärentämiseltä.
  5. validoi syöttötiedot aina heti, kun se vastaanotetaan palvelinmenetelmässä. Käytä vain alkeellista dataa syöttöparametrina niin paljon kuin mahdollista.
  6. luota kehyksiin, jotka tarjoavat validointiominaisuuksia, koska ne ovat jo suuren yhteisön testaamia.

kerro ajatuksesi ja kokemuksesi siitä, miten voit turvata rauhalliset verkkopalvelut organisaatiossasi.

Onnellista Oppimista !!

oliko tämä viesti hyödyllinen?

kerro, piditkö viestistä. Se on ainoa tapa parantaa.
Kyllä
Ei

Vastaa

Sähköpostiosoitettasi ei julkaista.

More: