Oracle
 sql >> Database >  >> RDS >> Oracle

Collega Oracle da nodejs

So che questo è un vecchio post... volevo solo menzionare un modo sicuro per nodejs di comunicare con Oracle senza moduli aggiuntivi.

Configura Oracle in modo che possa creare e ricevere richieste http. Ci sono alcuni modi per farlo:

Il modo più semplice è attivare il gateway epg:

Inoltre puoi impostare modplsq:

o il listener Apex:

Quindi nel nodo js esegui uno standard http.get:

http.get("http://localhost/accessor/myschema.my_procedure?x=1&y=2", function(res) {
    console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
   console.log("Got error: " + e.message);

});

Qualunque sia l'approccio... oracle sicuro in modo che risponda solo all'indirizzo IP del server nodejs. Quindi, se in esecuzione su localhost:

if owa_util.get_cgi_env('REMOTE_ADDR') = '127.0.0.1' then 
   --ok
else
   -- fail
end if;

Blocca anche le chiamate a ogni altro pacchetto e procedura. Ci sono alcuni modi per farlo a seconda del percorso che prendi.

Assicurati di farlo almeno:

  • crea una white list di elementi che possono essere richiamati dal web
  • richiede che tutti gli URL contengano il nome dello schema come:myuser.myprocedure
  • assicurati che la prima parte dell'URL (fino al percorso della query) contenga solo a-z 0-9
  • veramente una buona lista bianca si prenderà cura della maggior parte di questi elementi

Il gioco è fatto... non c'è bisogno di preoccuparsi se un modulo si rompe o smette di funzionare con la prossima versione.

E...puoi comunicare facilmente da Oracle all'uso di Node:

  • apex_web_service.make_rest_request
  • utl_http