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