近期學習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進行攻擊,存儲型通常對用戶的輸入作攻擊.