Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Verbinden Sie Oracle von nodejs

Ich weiß, dass dies ein alter Beitrag ist ... wollte nur einen sicheren Weg für nodejs erwähnen, um ohne zusätzliche Module mit Oracle zu kommunizieren.

Richten Sie Oracle so ein, dass es HTTP-Anforderungen erstellen und empfangen kann. Dafür gibt es mehrere Möglichkeiten:

Am einfachsten ist es, das EPG-Gateway einzuschalten:

Sie können auch modplsq einrichten:

oder der Apex-Listener:

Führen Sie dann in node js ein Standard-http.get:

aus
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);

});

Welcher Ansatz auch immer ... sicheres Orakel, damit es nur auf die IP-Adresse des nodejs-Servers antwortet. Wenn Sie also auf localhost laufen:

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

Blockieren Sie auch Aufrufe an alle anderen Pakete und Prozeduren. Je nachdem, welchen Weg Sie einschlagen, gibt es einige Möglichkeiten, dies zu tun.

Stellen Sie sicher, dass Sie mindestens Folgendes tun:

  • Erstellen Sie eine weiße Liste von Elementen, die aus dem Internet aufgerufen werden können
  • erfordern, dass alle URLs den Schemanamen enthalten, wie z. B.:myuser.myprocedure
  • Stellen Sie sicher, dass der erste Teil der URL (bis zum Abfragepfad) nur a-z 0-9 enthält
  • Wirklich eine gute weiße Liste wird sich um die meisten dieser Punkte kümmern

Da haben Sie es ... Sie brauchen sich keine Sorgen zu machen, wenn ein Modul kaputt geht oder mit der nächsten Version nicht mehr funktioniert.

UND...Sie können einfach von Oracle zu Node use kommunizieren:

  • apex_web_service.make_rest_request
  • utl_http