淺談CDN、SEO、XSS、CSRF
CDN
什麽是CDN
初學Web開發的時候,多多少少都會聽過這個名詞->CDN。
CDN在我沒接觸之前,它給我的印象是用來優化網絡請求的,我第一次用到CDN的時候是在找JS文件時。當時找不到相對應的JS文件下載地址(之前一般我都是把JS下載下來,然後在項目中引用的。PS:當然了,我覺得大部分初學者都一樣)
找著找著發現了這個網站:http://www.bootcdn.cn/,發現它這個搜索引擎收錄了很多的JS文件,直接在項目中引入它的地址就行了!
後來,在購買服務器的時候也發現了廣告:CDN加速之類的...
當時覺得還沒用到,就不管它了。
今天,在整理筆記的時候又看到了CDN這個名詞了,於是決定去好好學習一番。
那麽我講了一大堆,CDN到底是什麽?
CDN的全稱是Content Delivery Network,即內容分發網絡。
為什麽要使用CDN?
從我上面的經歷而言,CDN肯定是能夠加快我們的訪問網站的速度的(因為有CDN服務器賣),那JS引入絕對的路徑和我們自己下載下來,使用相對路徑引入有什麽區別呢???
在我們的應用中,我們一般采用:應用服務器和資源服務器進行分離的方式
- 應用服務器主要是我們的代碼(JS、CSS不放在應用服務器上)
- 資源服務器主要是一些靜態的資源,而CDN就是作為我們的資源服務器了。
CDN主要用於存儲JS、CSS文件,能夠加快我們獲取JS、CSS的內容
參考資料:
- 知乎問題:CDN是什麽?使用CDN有什麽優勢?
- 內容發布網絡(Content Delivery Network,CDN)
SEO
什麽是SEO
SEO(search engine optimization 搜索引擎優化)
SEM(search engine marketing 搜索引擎營銷)
SEM包括搜索引擎優化(SEO)、付費排名、精準廣告以及付費收錄,SEM包括SEO和競價,SEO也是SEM的一種方式。
SEM要錢的(簡單理解:百度的廣告就是SEM)、SEO不用錢的(自己配置提高搜索引擎的權重)
SEO是一種技術,主要是用於提高網站瀏覽量而做的優化手段
為什麽需要SEO?
我們搜一下Java微信公眾號:
發現排名是有先後的,博客園、CSDN都是靠前的。可是平臺那麽多,還有開源中國啊、簡書啊等等平臺為啥就排不到前面呢?就是SEO沒有博客園、CSDN做得好
想要提高在搜索引擎的權重(自己的網站排得更前)就需要學習SEO。
提高權重的方法
那麽提高在搜索引擎的權重有什麽辦法的呢??可以看下面的圖:
當然了,跟我們編寫的代碼質量也是有很大的關系的:
A、title標題:強調重點
B、meta keywords關鍵詞:列舉幾個關鍵詞
C、meta description網頁描述:高度概括網頁的內容
以上信息不要堆積、重復
語義話代碼(HTML 標簽有自己的意義,在適當的位置用適當的標簽):
- 1、h1~h6 多用於標題
- 2、ul 多用於無序列表
- 3、ol 多用於有序列表
- 4、dl 用於定義數據列表
- 5、em、strong 表示強調
- div、span 是 html 標簽中最沒有語義的
有利搜索引擎:
- 1、a:訪問外部鏈接時要加上 rel="nofollow",告訴搜索引擎外部鏈接無需追蹤,加上 title 說明
- 2、h1:搜索引擎外認為 h1 最重要,使用 css 調整,網頁正文標題用 h1,副標題用 h2,其他不要亂用 h 標簽
- 3、br 用於文本間的換行,用在 p 內,也可以用
<p><br/></p>
表示空行 - 4、caption:表格標題
- 5、img:使用 title、alt 說明
- 6、
<strong><em
>表示強調,<em>
的權重僅次於<strong>
,如果只想表示加粗斜體,建議使用<b><i>
,表示強調則使用<strong><i>
- 7、重要內容 HTML 代碼放在最前面(使用 css 改變布局)
- 8、重要內容不要用 JS 輸出(搜索引擎看不懂 JS)
- 9、盡量少使用 iframe 框架(搜索引擎不喜歡)
- 10、謹慎使用 display:none(搜索引擎會過濾掉其內容,設置 z-index 代替)
- 11、精簡代碼
頁面結構:
- 結構布局優化:用扁平化結構(層次結構超過三層小蜘蛛就不願意爬了)
- 控制首頁鏈接數量(中小網站100以內,頁面導航、底部導航、錨文字鏈接等)
- 扁平化的目錄層次(小蜘蛛跳轉3次可以到達網站內任何一個內頁,網站的設計主頁、欄目、內容頁,不要用縱線性的結構)
- 導航seo優化(頭部、底部、內容部分,主導航、副導航、分類導航,盡量用文字,面包屑導航,在每個網站上留下面包屑,使用戶可以了解網站組織形式,放於正文的左上方)
- 內容頁面的布局細節
- 左面正文,右面熱門文章、相關文章,下面是版權信息及鏈接,欄目排布: 首頁123456789下拉選擇最贊)
- 網站的加載速度會影響小蜘蛛的爬行,頁面最好不要超過100k
參考資料:
- 慕課網:淺談搜索引擎_SEO
- 慕課網:SEO在網頁制作中的應用
XSS
什麽是XSS?
跨站腳本(cross site script)為了避免與樣式css混淆,所以簡稱為XSS。
XSS是一種經常出現在web應用中的計算機安全漏洞,也是web中最主流的攻擊方式。那麽什麽是XSS呢?
- XSS是指惡意攻擊者利用網站沒有對用戶提交數據進行轉義處理或者過濾不足的缺點,進而添加一些代碼,嵌入到web頁面中去。使別的用戶訪問都會執行相應的嵌入代碼。
XSS跟SQL註入是類似的,它攻擊有兩種方式:
- 反射型
- 存儲型
XSS攻擊的危害是很大的,註入script
可以執行任何的JS代碼(意味著可以獲取cookie等信息了),註入style
可以把頁面全部弄崩
防範XSS攻擊
最重要的是:不要相信客戶端發送過來的任何數據!
- 評論功能就最容易發生XSS攻擊了
防範XSS攻擊可簡單分成三個步驟:
- 編碼(對特殊的字符進行編碼,
<
,‘
,>
等特殊字符 - 過濾(過濾掉一切可能被調用的屬性,標簽。比如:onclick,onerror,iframe等等)
- encode.js:可以使用https://github.com/mathiasbynens/he 中的he.js
- domParse:可以用 https://github.com/blowsie/Pure-JavaScript-HTML5-Parser
參考資料:
- 慕課網:Web安全-XSS
- XSS跨站腳本攻擊
- XSS實戰:我是如何拿下你的百度賬號
- 揭秘——黑客是如何使用xss的
- XSS攻擊是什麽,怎麽秒殺iphone釣魚站
CSRF
什麽是CSRF
CSRF的全名為Cross-site request forgery,它的中文名為 跨站請求偽造(偽造跨站請求【這樣讀順口一點】)
CSRF是一種夾持用戶在已經登陸的web應用程序上執行非本意的操作的攻擊方式。相比於XSS,CSRF是利用了系統對頁面瀏覽器的信任,XSS則利用了系統對用戶的信任。
CSRF攻擊是源於Web的隱式身份驗證機制!Web的身份驗證機制雖然可以保證一個請求是來自於某個用戶的瀏覽器,但卻無法保證該請求是用戶批準發送的
來源:http://www.cnblogs.com/phpstudy2015-6/p/6771239.html
防禦CSRF攻擊
抵禦CSRF攻擊的關鍵在於:在請求中放入攻擊者所不能偽造的信息,並且該信息不存在於Cookie之中。
那麽我們在提交表單時添加一個token並驗證就行了,很簡單
參考資料:
- 每日一題CSRF 是什麽?
- CSRF攻擊與防禦
- 如何用簡潔生動的語言說明 XSS 和 CSRF 的區別?
如果文章有錯的地方歡迎指正,大家互相交流。習慣在微信看技術文章,想要獲取更多的Java資源的同學,可以關註微信公眾號:Java3y
淺談CDN、SEO、XSS、CSRF