成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Web前端安全探秘:技術理論與現實應用

安全 應用安全
早些時候,曾被狹義的認為前端安全即JS安全。倒是沒有錯,但不全面。目前來看,應該說:前端代碼安全(JS代碼安全)+ 前端攻擊入侵防護功能 = Web前端安全。

前言

Web前端安全是個新概念,可以理解為它是Web安全防護領域的一部分。

早些時候,曾被狹義的認為前端安全即JS安全。倒是沒有錯,但不全面。目前來看,應該說:前端代碼安全(JS代碼安全)+ 前端攻擊入侵防護功能 = Web前端安全。

也可以通俗的解釋為:Web前端安全,包含:JS代碼安全、Web前端安全防護兩個方面。

[[261415]]

為什么要做Web前端安全工作?

簡短的概述而言:做好Web前端安全,可以防止很多Web安全事件的發生。比如:Web頁面功能被分析、JS\H5應用被復制或盜用、正常功能被篡改;還比如:防止爬蟲、防止自動化攻擊、防止SQL注入、防止XSS攻擊、防止CRSF等等。

看到這里,不要疑惑,上面沒打錯字:Web前端安全做好了,可以實現很多本該是WAF才有的安全防護效果。

如果安全要求不是非常高,很多中小企業的Web防護,完全可以在Web前端實現。

Web前端安全實操

1. JS代碼安全

Web頁面功能,都是由JS代碼實現的。JS代碼公開透明的特點,使代碼誰都可以任意查看,這就帶來了如:被分析、復制、盜用、功能篡改等一系列安全隱患。

知名的事件如:錘子手機發布時銷量造假事件、小米手機英國眾籌作弊事件,都是由于JS代碼未保護而直接導致的。

JS代碼經過混淆加密后,會變成不可讀、不可分析、不可盜用(代碼可與域名綁定)的安全代碼,可極大的提高前端功能安全性。

JS代碼混淆加密,有專業的平臺工具,比如:JShaman。

qian_duan_an_quan_01.jpg

一段未經保護的代碼,如:

  1. function hello_world()  
  2. {   
  3. alert("hello world");  
  4. }   
  5. hello_world(); 

經JShaman混淆加密,低強度的保護結果,代碼會變為:

  1. var _0x5f2d=['hello\x20world'];(function(_0x1d7bcc,_0x3c8ae3){var _0x51bb3c=function(_0x1df202){while(--_0x1df202){_0x1d7bcc['\x70\x75\x73\x68'](_0x1d7bcc['\x73\x68\x69\x66\x74']());}};_0x51bb3c(++_0x3c8ae3);}(_0x5f2d,0x121));var _0xd5f2=function(_0x32a75d,_0x18d324){_0x32a75d_0x32a75d=_0x32a75d-0x0;var    _0x462cef=_0x5f2d[_0x32a75d];return _0x462cef;};function hello_world(){alert(_0xd5f2('0x0'));}hello_world(); 

到這里,也許有人會有異意:eval也是可以對JS代碼進行加密的。此言差異,eval早已經被玩壞了,還原eval加密代碼的辦法簡直是千千萬。而這種混淆加密的方式,保護后的代碼是不可逆的。

qian_duan_an_quan_02.jpg

也許上面的保護結果還不夠安全?那么將加密強度調高一些,結果可成為:

  1. var _0x0514=['aGVsbG8gd29ybGQ\x3d'];(function(_0x3b012b,_0x539d9c){var _0x37316d=function(_0x30ad8d){while(--_0x30ad8d){_0x3b012b['\x70\x75\x73\x68'](_0x3b012b['\x73\x68\x69\x66\x74']());}};var _0x53350c=function(){var _0x823789={'\x64\x61\x74\x61':{'\x6b\x65\x79':'\x63\x6f\x6f\x6b\x69\x65','\x76\x61\x6c\x75\x65':'\x74\x69\x6d\x65\x6f\x75\x74'},'\x73\x65\x74\x43\x6f\x6f\x6b\x69\x65':function(_0xbc497b,_0x4336d2,_0x4169e2,_0x43419c){_0x43419c_0x43419c=_0x43419c||{};var    _0x4916b2=_0x4336d2+'\x3d'+_0x4169e2;var _0x12134a=0x0;for(var _0x12134a=0x0,_0x783636=_0xbc497b['\x6c\x65\x6e\x67\x74\x68'];_0x12134a<_0x783636;_0x12134a++){var _0x2e1f17=_0xbc497b[_0x12134a];_0x4916b2+='\x3b\x20'+_0x2e1f17;var _0x35f5fa=_0xbc497b[_0x2e1f17];_0xbc497b['\x70\x75\x73\x68'](_0x35f5fa);_0x783636=_0xbc497b['\x6c\x65\x6e\x67\x74\x68'];if(_0x35f5fa!==!![]){_0x4916b2+='\x3d'+_0x35f5fa;}}_0x43419c['\x63\x6f\x6f\x6b\x69\x65']=_0x4916b2;},'\x72\x65\x6d\x6f\x76\x65\x43\x6f\x6f\x6b\x69\x65':function(){return'\x64\x65\x76';},'\x67\x65\x74\x43\x6f\x6f\x6b\x69\x65':function(_0x48ae46,_0x427a1d){_0x48ae46_0x48ae46=_0x48ae46||function(_0x271c78){return    _0x271c78;};var _0x3a6742=_0x48ae46(new RegExp('\x28\x3f\x3a\x5e\x7c\x3b\x20\x29'+_0x427a1d['\x72\x65\x70\x6c\x61\x63\x65'](/([.$?*|{}()[]\/+^])/g,'\x24\x31')+'\x3d\x28\x5b\x5e\x3b\x5d\x2a\x29'));var _0x3ae165=function(_0xc39227,_0x5b1202){_0xc39227(++_0x5b1202);};_0x3ae165(_0x37316d,_0x539d9c);return    _0x3a6742?decodeURIComponent(_0x3a6742[0x1]):undefined;}};var _0x33cdd7=function(){var _0xb70dcd=new RegExp('\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d');return    _0xb70dcd['\x74\x65\x73\x74'](_0x823789['\x72\x65\x6d\x6f\x76\x65\x43\x6f\x6f\x6b\x69\x65']['\x74\x6f\x53\x74\x72\x69\x6e\x67']());};_0x823789['\x75\x70\x64\x61\x74\x65\x43\x6f\x6f\x6b\x69\x65']=_0x33cdd7;var _0x113d74='';var _0x31a093=_0x823789['\x75\x70\x64\x61\x74\x65\x43\x6f\x6f\x6b\x69\x65']();if(!_0x31a093){_0x823789['\x73\x65\x74\x43\x6f\x6f\x6b\x69\x65'](['\x2a'],'\x63\x6f\x75\x6e\x74\x65\x72',0x1);}else    if(_0x31a093){_0x113d74=_0x823789['\x67\x65\x74\x43\x6f\x6f\x6b\x69\x65'](null,'\x63\x6f\x75\x6e\x74\x65\x72');}else{_0x823789['\x72\x65\x6d\x6f\x76\x65\x43\x6f\x6f\x6b\x69\x65']();}};_0x53350c();}(_0x0514,0x91));var _0x4051=function(_0x34db19,_0x35bd13){_0x34db19_0x34db19=_0x34db19-0x0;var    _0xa11d83=_0x0514[_0x34db19];if(_0x4051['\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x65\x64']===undefined){(function(){var _0x278969=Function('\x72\x65\x74\x75\x72\x6e\x20\x28\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x28\x29\x20'+'\x7b\x7d\x2e\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x28\x22\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x69\x73\x22\x29\x28\x29'+'\x29\x3b');var    _0x2a0b7d=_0x278969();var _0x344b5c='\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';_0x2a0b7d['\x61\x74\x6f\x62']||(_0x2a0b7d['\x61\x74\x6f\x62']=function(_0x48890d){var    _0x5d6c02=String(_0x48890d)['\x72\x65\x70\x6c\x61\x63\x65'](/=+$/,'');for(var _0x5bd8ac=0x0,_0x5edcb9,_0x3f6190,_0x2bd336=0x0,_0x5c46eb='';_0x3f6190=_0x5d6c02['\x63\x68\x61\x72\x41\x74'](_0x2bd336++);~_0x3f6190&&(_0x5edcb9=_0x5bd8ac%0x4?_0x5edcb9*0x40+_0x3f6190:_0x3f6190,_0x5bd8ac++%0x4)?_0x5c46eb+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0xff&_0x5edcb9>>(-0x2*_0x5bd8ac&0x6)):0x0){_0x3f6190=_0x344b5c['\x69\x6e\x64\x65\x78\x4f\x66'](_0x3f6190);}return    _0x5c46eb;});}());_0x4051['\x62\x61\x73\x65\x36\x34\x44\x65\x63\x6f\x64\x65\x55\x6e\x69\x63\x6f\x64\x65']=function(_0x4fa800){var _0x61c854=atob(_0x4fa800);var _0x2bf066=[];for(var _0x3eabd1=0x0,_0x52768b=_0x61c854['\x6c\x65\x6e\x67\x74\x68'];_0x3eabd1<_0x52768b;_0x3eabd1++){_0x2bf066+='\x25'+('\x30\x30'+_0x61c854['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3eabd1)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x10))['\x73\x6c\x69\x63\x65'](-0x2);}return    decodeURIComponent(_0x2bf066);};_0x4051['\x64\x61\x74\x61']={};_0x4051['\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x65\x64']=!![];}if(_0x4051['\x64\x61\x74\x61'][_0x34db19]===undefined){var _0x52f575=function(_0x4d5e36){this['\x72\x63\x34\x42\x79\x74\x65\x73']=_0x4d5e36;this['\x73\x74\x61\x74\x65\x73']=[0x1,0x0,0x0];this['\x6e\x65\x77\x53\x74\x61\x74\x65']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';};this['\x66\x69\x72\x73\x74\x53\x74\x61\x74\x65']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a';this['\x73\x65\x63\x6f\x6e\x64\x53\x74\x61\x74\x65']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x52f575['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x63\x68\x65\x63\x6b\x53\x74\x61\x74\x65']=function(){var    _0x4f836=new RegExp(this['\x66\x69\x72\x73\x74\x53\x74\x61\x74\x65']+this['\x73\x65\x63\x6f\x6e\x64\x53\x74\x61\x74\x65']);return this['\x72\x75\x6e\x53\x74\x61\x74\x65'](_0x4f836['\x74\x65\x73\x74'](this['\x6e\x65\x77\x53\x74\x61\x74\x65']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x73\x74\x61\x74\x65\x73'][0x1]:--this['\x73\x74\x61\x74\x65\x73'][0x0]);};_0x52f575['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x72\x75\x6e\x53\x74\x61\x74\x65']=function(_0x5ed9b5){if(!Boolean(~_0x5ed9b5)){return    _0x5ed9b5;}return this['\x67\x65\x74\x53\x74\x61\x74\x65'](this['\x72\x63\x34\x42\x79\x74\x65\x73']);};_0x52f575['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x67\x65\x74\x53\x74\x61\x74\x65']=function(_0x1608bb){for(var _0x3bfff3=0x0,_0x4adb83=this['\x73\x74\x61\x74\x65\x73']['\x6c\x65\x6e\x67\x74\x68'];_0x3bfff3<_0x4adb83;_0x3bfff3++){this['\x73\x74\x61\x74\x65\x73']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']()));_0x4adb83=this['\x73\x74\x61\x74\x65\x73']['\x6c\x65\x6e\x67\x74\x68'];}return    _0x1608bb(this['\x73\x74\x61\x74\x65\x73'][0x0]);};new _0x52f575(_0x4051)['\x63\x68\x65\x63\x6b\x53\x74\x61\x74\x65']();_0xa11d83=_0x4051['\x62\x61\x73\x65\x36\x34\x44\x65\x63\x6f\x64\x65\x55\x6e\x69\x63\x6f\x64\x65'](_0xa11d83);_0x4051['\x64\x61\x74\x61'][_0x34db19]=_0xa11d83;}else{_0xa11d83=_0x4051['\x64\x61\x74\x61'][_0x34db19];}return    _0xa11d83;};function hello_world(){var _0x20d22f=function(){var _0x12d06f=!![];return function(_0x2d1e48,_0x2cad7c){var _0x478394=_0x12d06f?function(){if(_0x2cad7c){var _0x400b9e=_0x2cad7c['\x61\x70\x70\x6c\x79'](_0x2d1e48,arguments);_0x2cad7c=null;return    _0x400b9e;}}:function(){};_0x12d06f=![];return _0x478394;};}();var _0x34e3b6=_0x20d22f(this,function(){var _0xafe2ff=function(){return'\x64\x65\x76';},_0x492e83=function(){return'\x77\x69\x6e\x64\x6f\x77';};var _0x1f9c7f=function(){var _0x5ce740=new    RegExp('\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d');return!_0x5ce740['\x74\x65\x73\x74'](_0xafe2ff['\x74\x6f\x53\x74\x72\x69\x6e\x67']());};var _0x132af8=function(){var    _0x3ea732=new RegExp('\x28\x5c\x5c\x5b\x78\x7c\x75\x5d\x28\x5c\x77\x29\x7b\x32\x2c\x34\x7d\x29\x2b');return _0x3ea732['\x74\x65\x73\x74'](_0x492e83['\x74\x6f\x53\x74\x72\x69\x6e\x67']());};var _0x5ca904=function(_0x44911c){var _0xff23c4=~-0x1>>0x1+0xff%0x0;if(_0x44911c['\x69\x6e\x64\x65\x78\x4f\x66']('\x69'===_0xff23c4)){_0x2c9b77(_0x44911c);}};var    _0x2c9b77=function(_0x371de1){var _0x5a287c=~-0x4>>0x1+0xff%0x0;if(_0x371de1['\x69\x6e\x64\x65\x78\x4f\x66']((!![]+'')[0x3])!==_0x5a287c){_0x5ca904(_0x371de1);}};if(!_0x1f9c7f()){if(!_0x132af8()){_0x5ca904('\x69\x6e\x64\u0435\x78\x4f\x66');}else{_0x5ca904('\x69\x6e\x64\x65\x78\x4f\x66');}}else{_0x5ca904('\x69\x6e\x64\u0435\x78\x4f\x66');}});_0x34e3b6();alert(_0x4051('0x0'));}hello_world(); 

代碼已變的完全不可讀、不可逆,更無法理解代碼含義了。代碼安全性真正得到了極大提高。當然,功能上與混淆加密前是無異的,不影響正常運行。

這樣前端代碼(JS代碼)安全問題得到了解決。

想必不少人對JS混淆加密是熟悉的,上面的內容還稱不上是硬貨。那么接下來,是展示黑魔法的時候了。

2. Web前端防護

前面已經簡單說明過,WAF前端可以實現很多WAF才有的功能。比如:SQL注入防護、XSS跨站攻擊防護、爬蟲防護、自動化功擊防護,等等。聽起來著實科幻。

[[261416]]

“有網友說:Web前端可以實現WAF功能,是真的嗎?我們來看調查短片…短文”

網絡上有一款Web安全產品,名為“Witch-Cape”,實現的就是上述功能,其對自身的定位即是:前端WAF!從名字上就可以猜測,這就是一款在前端實現WAF功能的產品。

qian_duan_an_quan_04.jpg

Witch-Cape是SDK式的腳本,從網站可以直接下載。使用起來也非常方便,就是加載一個JS文件就可以了。就可以了,沒有其它,果然簡單!

接下來,用事實說話,測試其是否真實有效。比如測試自動化攻擊防護:

首先準備測試代碼:

qian_duan_an_quan_10.jpg

這段測試代碼模擬了類似撞庫或暴力破解之類的自動化攻擊。未接入Witch-Cape前,當運行腳本程序,會自動填寫用戶名、密碼。如下圖:

qian_duan_an_quan_05.jpg

在頁面中引入一行:

  1. script src="anti_automated_attack.js" 

這是Witch-Cape的反自動化攻擊模塊,然后再次嘗試之前的運行,會發現:無法自動輸入密碼,自動化腳本運行出錯,攻擊被成功阻止:

qian_duan_an_quan_06.jpg

再進一步測試,使用自動按鍵軟件:按鍵精靈。錄制屏幕并自動輸入內容。保護前,可自動輸入:

qian_duan_an_quan_07.jpg

保護后,按鍵模擬無效:

qian_duan_an_quan_08.jpg

這個測試證明:Witch-Cape可以防止自動按鍵模擬軟件發起的攻擊。

用這一個測試、實驗,說明前端是可以進行Web安全防護的。

篇幅所限,其它更多的功能,如:SQL注入、XSS、CSRF等等這里就不逐一進行測試了。應該相信“全都是真的”。

Web前端安全的現實意義

一方面,它解決了傳統Web安全防護的盲點,比如JS代碼安全問題,這是它的功能意義。另一方面,它嘗試以一種低成本的方式,換了一個陣地解決Web安全防護問題。

在實現中,很多中小企業、政府的網站,有安全防護的需要,不單是合規性需求,而且是真實性需求。但很多時候沒有足夠的資金用于采購昂貴的WAF。Web前端安全技術、產品的發展,在很大程度上可以解決這類剛需群體的實際需求。

 

責任編輯:趙寧寧 來源: Freebuf
相關推薦

2018-05-25 12:18:02

webhtml5javascript

2011-03-11 16:43:51

2009-07-29 17:19:14

2010-09-06 09:25:42

Web應用程序

2012-11-01 14:35:53

SOAWeb安全Web服務

2009-11-25 10:57:17

2010-08-09 08:48:46

File APIWeb

2021-04-27 08:31:10

前端應用場景

2009-12-25 12:21:56

2010-05-11 16:22:40

2018-12-06 09:12:58

2010-07-20 20:45:54

2011-07-28 18:56:20

2011-08-02 15:19:28

2009-11-30 10:55:22

2014-03-07 09:28:52

SDN技術SDN軟件定義網絡

2011-04-06 13:49:41

2023-06-19 08:19:50

2020-09-01 15:20:37

網絡安全策略管理技術NSPM網絡安全

2024-10-16 10:03:13

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区久久 | 国产精品久久久久久久久图文区 | 国产精品久久久久久久久免费相片 | 在线看黄免费 | 亚洲视频区 | 国产成人综合在线 | 91在线精品秘密一区二区 | 欧美视频一区二区三区 | 日本免费一区二区三区四区 | 国产一极毛片 | 中文字幕在线免费视频 | 国产精品久久久久久妇女6080 | 精品一区二区三区四区在线 | 91网站在线观看视频 | 99精品欧美一区二区三区 | 亚洲精品久久久久久首妖 | 久久久久九九九九 | 欧美久久久久久 | 99久久久无码国产精品 | 一区二区三区四区av | 久久精品91 | 欧美一区二区三区精品免费 | 日韩 国产 在线 | 亚洲一区二区三区四区在线观看 | 亚洲不卡在线观看 | 三级特黄特色视频 | 亚洲精品在线视频 | 久久精品国产免费 | 国产精品久久一区 | 亚洲免费av一区 | 国产在线一区二区 | 久久综合九色综合欧美狠狠 | 国产精品日本一区二区在线播放 | 国产一区二区三区四区 | 久久99蜜桃综合影院免费观看 | 精品国产一区探花在线观看 | 亚洲视频在线观看 | 精品日韩在线 | 中国人pornoxxx麻豆 | 亚洲国产午夜 | 免费观看成人av |