node.js - 如何保护休息 api?
问题描述
我正在使用 Angular 开发一个应用程序。我想从 rest api 中获取要列出的数据。但是,我不希望用户访问该资源。我可以使用哪种语言、库或框架来保护它?用户在没有会员资格的情况下使用该应用程序。
我尝试了 jwt,但没有得到我想要的结果。也许我做不到。
这里是 express.js
const app = require('express')()
const express = require('express')
const fs = require('fs')
const cors = require('cors')
const bodyParser = require('body-parser');
app.use(cors())
app.use(bodyParser.json())
app.get('/', (req, res) => {
res.json({message: 'Rest API Work'})
})
app.get('/list', (req, res) => {
fs.readFile('data1.json','utf-8',(err,data)=>{
res.setHeader("Content-Type", "application/json; charset=utf-8")
data = JSON.parse(data)
console.log(data)
res.end(JSON.stringify(data,null,4))
})
})
app.listen(3002, function(){
console.log('Server OK')
})
我想要一个简单的安全方法,我可以在其中与 Angular 连接。
解决方案
保护 API 的最佳方式是开始使用像 Nginx 这样的反向代理。Javascript 框架在安全性方面基本相同。它们都有一个基本的路由器处理程序、调度程序(基于本机 Node.js HTTP 库)和一些基本的辅助方法,他们给它起了一个好听的名字,就是这样。我检查了几乎所有主要框架的源代码。现在,Nginx 的一些基本配置参数是:client_body_buffer_size
proxy_buffers
等等。你所有的指令也应该正则表达式输入数据。一般来说,任何可以“过滤”恶意代码的东西都是有用的。Cloudflare 可以以某种方式帮助和其他一些可以保护您的应用程序的公司,但它们很昂贵。另一个很好的例子是使用 Docker 将您的应用程序容器化。
如果您在 Node.js 中有一段基本代码,那么破解它的最简单方法是通过您的应用程序的逻辑。您应该使用反 XSS 模块,例如xss
或express-sanitizer
。如果您使用的是 SQL 数据库,则应始终对查询值进行转义。
推荐阅读
- python - base.html 的变化
- python - 如何从一个点迭代列表中的下 n 个元素
- design-patterns - it is good practices to use Strategy/Factory pattern in application, having one end-point ? Even the request and response are different
- random - 在颤振中计算两个随机数
- java - 在 java 和 azure blob storage sdk 中上传带有子目录的目录
- scala - 在 Spark 中将数据帧写入 Teradata
- python - 来自 Pandas Dataframe 的 Hvplot/bokeh 汇总条形图
- sql - 关于为什么此 CASE 声明可能无法返回所需结果的思考
- pgadmin - 如何使用工具 PGADMIN 在 Postgres 中运行多个 sql 语句?
- vuejs2 - Vue 应用程序中的 AWS Amplify GraphQL API 返回 Null