أرغب في طلب صفحات في خادم Node.js الخاص بي بناءً على عنوان URI المطلوب.
ومع ذلك ، أشعر بالقلق من أن هذا قد يكون مشكلة أمنية خطيرة حيث يمكن للمستخدم حقن بعض الأحرف الخبيثة في عنوان url ، مثل ../../
والوصول إلى نقطة الخادم الجذر الخاصة بي والكشف عن جميع التعليمات البرمجية.
لذا تمامًا مثل إلقاء زجاجة من الماء على حريق كبير ، قمت بإلغاء خيار الإرسال .
للطلب.
هذه ليست رصاصة فضية ، ربما :)
ربما هناك بعض المعايير / أفضل الممارسات / دليل أو نقاط رئيسية حول تعقيم URI في REST API استنادًا إلى Node.js؟
تحرير - هنا يستخدم الرمز المطلوب
// app.js
app.use(require('./services/router')(app));
// router.js middleware
function router(app) {
return function(req, res, next) {
try {
// checking for . in the url
if (req.url.indexOf(".")!=-1) cast.badRequest();
// req.url.split('/')[2] should be customers, users or anything else
require('../../resources/' + req.url.split('/')[2] + '/' + req.url.split('/')[2] + '-router')(app);
next();
} catch(err) { cast.notFound(); }
}
}
module.exports = router;
// rides-router.js (this could be users-router.js or customers-router.js)
module.exports = function(app) {
// GET ride - select a ride
app.get("/v1/rides/:id", dep.verifyToken(), require('./api/v1-get-ride'));
// POST ride - insert a new ride
app.post("/v1/rides", dep.verifyToken(), require('./api/v1-set-ride'));
app.use((req, res, next) => {
cast.notFound();
});
}