近期学习express,因而想着用express写个东西加深印象,巩固下学到的知识。因而就有了这个我的项目。html
先看一波实现图吧。前端
这里作了几个改动,我说下个人理解,若有不对,但愿指出。app.js做为入口文件,看图上的箭头,当请求的路径为news的时候,也就是app.use('/news',index)这行代码,他会去找router文件下面的index文件而后执行,也就是require('../routers/index')这行代码。node
这里经过前台传的newstype(新闻类型的值)和pagenumber(显示的条数),而后在数据库里面查找和传回来的newstype匹配的数据并限制显示3条,并返回给前台数据,前台代码以下图(原谅我截图截不彻底),
以后获得数据进行遍历显示就能够了。mysql
这里说明下,到了后台管理页面,往app.js里面看,这里就要执行这2段代码了,jquery
app.use('/admin',users) var users = require(../routes/users)
这里就要去找routes文件夹下面的users文件并执行了。git
var xss = require("xss");
以后对用户的输入校验,这里值针对xss存储型攻击,如github
var newstitle = xss(req.body.newstitle);
3.除此以外,还作了csufr 跨站攻击的处理,这里我说下个人理解。首先,须要在html里面插入一个隐藏的input标签,web
<input type="hidden" name="_csrf" value="<%= csrfToken %>">
这里须要注意的是name值必须为_csrf,这个Input标签的做用就至关于自身带了一个令牌(身份证)。ajax
而后,在用户输入的时候也要获取到这个input的值,并一块儿发给后台,如图,sql
接着,在express里面须要npm安装csurf插件并引入,如图
最后,在一进来后台管理路由的作判断是否和携带的令牌相匹配。
router.get('/', csrfProtection, function(req, res) {res.render('users', { csrfToken: req.csrfToken()})
})
经过这个我的项目,算是对express有点了解,加深了本身对ajax的使用和感悟,也接着学习了web安全防护,主要分为存储型和反射型,反射型通常是对url进行攻击,存储型通常对用户的输入作攻击.