小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

煩人的正則表達(dá)式(五)

 泳光圖書(shū)館 2019-01-11

正則表達(dá)式的應(yīng)用十分廣泛,你既可以用它來(lái)提取一大堆文字中的含有對(duì)應(yīng)規(guī)則的單詞,也可以用來(lái)查看文本中是否存在格式不規(guī)范的語(yǔ)句,或者運(yùn)用它來(lái)實(shí)現(xiàn)過(guò)濾,過(guò)濾某些搗蛋鬼輸入的驚為天人的用戶名,或是某些黑客的惡意語(yǔ)句。

但編寫一條邏輯性強(qiáng)符合要求的正則表達(dá)式往往令人頭大,某個(gè)點(diǎn)的疏忽可能會(huì)導(dǎo)致存在功能不完善,過(guò)濾不完全導(dǎo)致可繞過(guò)等缺陷。當(dāng)運(yùn)用在網(wǎng)站上前后端數(shù)據(jù)交互過(guò)濾的正則存在缺陷,則會(huì)被黑客利用進(jìn)行攻擊。

我現(xiàn)在介紹的是如何思考與編寫合格的正則表達(dá)式。由于我個(gè)人熟悉的是web方面,所以詳細(xì)介紹網(wǎng)站前后端常用的正則表達(dá)式??赡芪蚁旅娼榻B的例子所用的方法不是最優(yōu)的,這是因?yàn)槲已芯康牟粔蛏钊?,歡迎大家給予糾正或建議。

網(wǎng)頁(yè)注冊(cè)頁(yè)面截圖

可以看到各個(gè)輸入框都有對(duì)應(yīng)的提示信息,我們希望用戶能按我們的要求輸入相關(guān)信息,但我們不能天真地認(rèn)為給個(gè)溫馨提示所有用戶就會(huì)乖乖地按要求輸入,畢竟還是有搗蛋鬼和黑客存在。

手機(jī)號(hào)

這個(gè)內(nèi)容算是比較容易的,首先手機(jī)號(hào)當(dāng)然是純數(shù)字的(說(shuō)不是的難道號(hào)碼是16進(jìn)制的?),長(zhǎng)度固定為11位。

小明:總結(jié)起來(lái)就是需要用戶輸入長(zhǎng)度為11位的純數(shù)字

然后小明就被搗蛋鬼給調(diào)戲了一下,搗蛋鬼輸入了11個(gè)0

這時(shí)小明才趕緊去科普了一下手機(jī)號(hào)碼組成規(guī)則,原來(lái)首位必須是1?。ㄖ劣谙拗朴?55,139,135等等這樣繁瑣的規(guī)則我們就權(quán)當(dāng)不知道^.^)

至于說(shuō)怎么驗(yàn)證手機(jī)號(hào)碼真?zhèn)蔚?..需要結(jié)合短信驗(yàn)證或號(hào)碼大數(shù)據(jù)支持,略

用戶名

搗蛋鬼想了好多個(gè)狂傲炫酷的名稱希望以此展示個(gè)性,但為了彰顯我們是正規(guī)網(wǎng)站(其實(shí)重點(diǎn)是為了安全),我們需要給予一點(diǎn)限制。

用戶可以給他們隨便起個(gè)名稱abcde,或者是具有意義的KING,或者使用數(shù)字等,但單雙引號(hào)這些特殊字符就沒(méi)必要用來(lái)彰顯自己的個(gè)性了,為了安全我們要禁止用戶使用特殊字符,長(zhǎng)度最好限制在能一口氣讀完...

我們就寫一個(gè)白名單機(jī)制的正則表達(dá)式

不對(duì)啊,萬(wàn)一用戶想起個(gè)中文名稱呢,這要求也不過(guò)分吧。這時(shí)我們就要修改一下,添加個(gè)中文的白名單

這次可以愉快的交差了。至于那些粗俗的昵稱,是需要根據(jù)完整的龐大的黑名單進(jìn)行屏蔽,所以我只能溫馨提示:小孩子不可以講臟話

另一種方法是基于黑名單過(guò)濾所有特殊符號(hào)(一般黑名單會(huì)有隱藏的風(fēng)險(xiǎn))

一次性把所有特殊字符都寫上去了,除了_下劃線。

郵箱

郵箱是一個(gè)很重要的元素,可以用來(lái)驗(yàn)證身份,接收網(wǎng)站郵件等。我們需要開(kāi)放這功能,順便加點(diǎn)過(guò)濾,防止用戶輸入有害信息。

分析一下郵箱的格式,一般郵箱都是名稱@域名這樣的形式,含有大小寫字母和.(點(diǎn)號(hào)),-(減號(hào)),_(下劃線)。域名可分多段,且只有第一段會(huì)出現(xiàn)數(shù)字。(最詳細(xì)的規(guī)則不止這些,現(xiàn)在簡(jiǎn)化一下)到現(xiàn)在是不是感覺(jué)有點(diǎn)繞,覺(jué)得過(guò)于復(fù)雜不知如何入手,但我們可以將其分段實(shí)現(xiàn)

先把各部分組成單獨(dú)列出來(lái),長(zhǎng)度我自由設(shè)置的,應(yīng)該能匹配到大多數(shù)郵箱(老司機(jī)可跳過(guò)此步)

檢查一下每一小段,感覺(jué)差不多了,最后拼成一句就完事了

最后拼接成超長(zhǎng)的語(yǔ)句,但如果一小段一小段的去分析,你會(huì)發(fā)現(xiàn)也不過(guò)如此。這是比較粗暴的匹配了,更多規(guī)則添加歡迎自己來(lái)挑戰(zhàn)。

密碼

先舒口氣。密碼的話,還是很簡(jiǎn)單的嘛。

限制為大小寫字母和數(shù)字組合就好了

what?添加特殊字符后密碼安全系數(shù)直線上升...

那干脆別過(guò)濾了[滑稽]

這雖然能保障用戶密碼安全,不易被破解,但這需要一套完善的后臺(tái)處理機(jī)制,感興趣的可深入研究web安全

該怎么使用這些正則表達(dá)式

對(duì)于應(yīng)用網(wǎng)站檢驗(yàn)表單,我們使用匹配這一類的函數(shù)即可。對(duì)傳入?yún)?shù)進(jìn)行一遍匹配,根據(jù)返回值判斷內(nèi)容是否符合正則表達(dá)式,設(shè)置相應(yīng)的if判斷語(yǔ)句。至于是寫在前端還是寫在后端,個(gè)人建議是用作防止用戶輸錯(cuò)信息格式的可以放在前端驗(yàn)證,而要調(diào)用數(shù)據(jù)庫(kù)的則盡量寫在后端驗(yàn)證,畢竟前端的東西用戶都是可以修改的。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多