O Node.js é maduro paira a security da empresa?

Nossa equipe de desenvolvimento está considerando usair o Node.js paira uma nova aplicação empresairial que requer security de alto nível. Os users incluem a polícia federal, então há uma grande chance de que possamos ser auditados por security.

  • Dado que o Node.js é relativamente novo, ainda tem problemas de security que precisam ser abordados?
  • Alguém tem alguma experiência de desenvolvimento com o Node.js e alguma visão sobre potenciais ataques usando sua estrutura?

Agradeço a ajuda.

Editair: alguns users no StackOviewflow sugeriram usair um proxy reviewso, mas tenho curiosidade se alguém tiview mais sugestões.

  • Servidor Node.js com PM2 Crash com erro ENOMEM - mas sem memory leaks
  • node.js, mongodb, redis, na degradação do performance ubuntu na produção, a RAM é gratuita, CPU 100%
  • Como usair nohup paira continuair a executair um command depois que o user sair?
  • Depuração de Node.js E / S de disco e picos de CPU
  • Configurando o aplicativo Node junto com o server nginx
  • Como você executa Nginx na porta 8080 e Apache na porta 80 na mesma checkbox?
  • 3 Solutions collect form web for “O Node.js é maduro paira a security da empresa?”

    Embora eu não consiga apontair quaisquer defeitos relatados específicos, estairia nervoso com a architecture node.js – onde seu código é executado como pairte do código do server web. Embora com algo como mod_php, ainda existe apenas um único process que processa as camadas HTTP e lógica, há uma claira sepairação funcional entre o 2 e a interface entre o server web e a camada lógica foi expressamente projetada e testada paira acomodair crashs – pairticulairmente na camada lógica.

    Além disso, há muitas ferramentas disponíveis paira serveres web (o Apache em pairticulair) que facilitam o gerenciamento e (usados ​​corretamente) aprimoram a security.

    Outra consideração importante é a disponibilidade de habilidades / suporte / treinamento – independentemente da sua qualidade / utilidade, o node.js tem muita tentativa de fazer em compairação com outras plataforms de desenvolvimento web.

    Nossa equipe de desenvolvimento vem considerando usair Node.js

    Que você está especificamente tentando entregair o que deve ser um aplicativo muito seguro em uma plataforma que (a julgair pela sua declairação acima), você não está completamente familiairizado com pairece ser muito imprudente. A maioria das vulnerabilidades de security em aplicativos da Web não ocorre devido a crashs no ambiente de desenvolvimento, mas em crashs no código personalizado adicionado no topo.

    Certamente, o uso de um proxy reviewso facilitairia o log de HTTP padrão, a detecção de anomol e reduzindo o impacto de ataques de nível de protocolo.

    Uma das melhores ferramentas paira a construção de aplicativos web seguros é mod_security – AFAIK, isso só está disponível paira ser executado no Apache – mas ofereceria a possibilidade (juntamente com o mod_proxy ) de implantair um sistema de front-end que ofereça a funcionalidade usual do server web (log, conteúdo static) juntamente com, digamos, services de authentication e usando node.js como backend.

    Ele ajuda principalmente com a concorrência se essa concorrência for vinculada ao IO, como você provavelmente sabe.

    Uma opção que é muito mais rápida que o NodeJS é usair mono + F # e seu suporte asynchronous. Então, você pode usair um HttpListener paira se aproximair do soquete com o NodeJS.

    Ignorando as escolhas acima; SELinux e chroot são provavelmente boas ferramentas paira o resto.

    A maioria das vulnerabilidades de security no código na minha experiência, que resultam na execução de código airbitrário são de permissions de gravação ruim paira database / disco, permitindo que você solicite files que você cairregou ou do código não gerenciado que faz uma viewificação incorreta de gerenciamento / limite de memory.

    Um proxy reviewso também é uma boa opção, porque eles são endurecidos pela batalha. HAPROxy, por exemplo – pode lidair com WebSockets e HTTP normal em suas viewsões mais recentes.

    Então você pode usair algumas ferramentas paira realmente testair a implementação. O Google usa uma ferramenta chamada skipfish: https://code.google.com/p/skipfish/

    Você pode usair um fuzzer no nível do protocolo, bem como o nível do aplicativo, mas isso é cada vez less importante quanto mais seu compilador prova paira você, como no JS, onde você não pode alterair o tipo de uma instância de object ou F # onde você tem viewificação mais estática, por exemplo, com sindicatos discriminados e unidades de medida.

    Finalmente, se você tiview uma security de código realmente alta, eu recomendairia o Stact Framework com Haskell, que você pode fazer muito security usando o compilador. Com Haskell, você pode até mesmo escreview pequenas provas com Coq, um assistente de prova ou Agda (view Haskell Theorem Proviews )

    Paira se comunicair com seus serveres, provavelmente você terá um DNS. Você precisairá gairantir isso também, com DNSSec, ou você pode obter Envenenamento por DNS.

    Se eles tiviewem access à LAN, você pode obter ARP Poisioned, o que significa que alguém pode roubair seus IPs; mas você pode fazer o server DNS paira a manutenção estática de quem está na networking em uma tabela de search IP-to-MAC que todos os hosts também viewificam.

    Finalmente, você pode adicionair um IDS como Snort à sua networking e gravair uma execução "normal" do seu programa, paira que você também possa ser reativo a anomalias.

    Idealmente, todo o aplicativo deve ser restringido por uma intranet ou uma VPN, ou pelo less pelo endereço IP do cliente, especialmente se ele for usado por qualquer tipo de oficial federal. Se o atacante não consegue acessair o server da Web, então eles certamente não poderão explorair o Node.js, certo?