Zapobieganie iniekcji SQL w Node.js
Czy możliwe jest zapobieganie zastrzykom SQL w Node.js (najlepiej z modułem) w taki sam sposób, w jaki PHP przygotowało wyciągi, które chroniły przed nimi.
Jeśli tak to jak? Jeśli nie,jakie są przykłady to może ominąć kod, który podałem (patrz poniżej).
Jakiś kontekst:
Tworzę aplikację internetową ze stosem zaplecza składającym się z Node.js + MySql przy użyciunode-mysql moduł. Z perspektywy użyteczności moduł jest świetny, ale nie zaimplementował jeszcze czegoś podobnego do PHPPrzygotowane oświadczenia (choć wiem, że jest nado zrobienia).
Z mojego zrozumienia, między innymi, wdrożenie przygotowanych oświadczeń przez PHPpomógł bardzo w zapobieganiu zastrzykom SQL. Martwię się jednak, że moja aplikacja node.js może być otwarta na podobne ataki,nawet z domyślnym łańcuchem uciekającym (jak w poniższym fragmencie kodu).
node-mysql wydaje się być najpopularniejszym łącznikiem mysql dla node.js, więc zastanawiałem się, co inni ludzie mogą robić (jeśli w ogóle), aby wyjaśnić ten problem - lub czy jest to nawet problem z node.js na początek (nie wiesz, jak by to nie było, ponieważ dotyczy to danych wprowadzanych przez użytkownika / klienta).
Czy powinienem przejść nanative-mysql-native na razie, ponieważ dostarcza przygotowanych wypowiedzi? Jestem niezdecydowany, aby to zrobić, ponieważ nie wydaje się być tak aktywny jak node-mysql (choć może to oznaczać, że jest kompletny).
Oto fragment kodu rejestracji użytkownika, który używaśrodek odkażający moduł wraz z przygotowaną instrukcją składni podobną do węzła mysql (która, jak wspomniałem powyżej, ucieka od znaków), aby zapobiec, odpowiednio, skryptom krzyżowym i zastrzykom sql:
// Prevent xss
var clean_user = sanitizer.sanitize(username);
// assume password is hashed already
var post = {Username: clean_user, Password: hash};
// This just uses connection.escape() underneath
var query = connection.query('INSERT INTO users SET ?', post,
function(err, results)
{
// Can a Sql injection happen here?
});