在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/ HTML問(wèn)答
你的瞳 回答

使用webP插件可以實(shí)現(xiàn),在<body></body>之間插入如下代碼,即可使用WebP了。
當(dāng)前版本共3個(gè)文件:WebP.js,WebP.swfWebP.htc。在此下載打包文件。

<script type="text/javascript" src="WebP.js"></script>
挽歌 回答
沒(méi)有絕對(duì)的安全

首先md5不能算是加密算法,因?yàn)樗菃蜗虻摹⒉豢赡娴?,你沒(méi)法對(duì)經(jīng)過(guò)md5運(yùn)算過(guò)的密碼進(jìn)行“解密”而得到原始的明文密碼,但確實(shí)在md5與密碼發(fā)生關(guān)系時(shí)我們喜歡叫它“加密”。所以就算攻擊者知道你用了md5哈希算法,截獲了你“加密”后的密碼,即md5(password)(不妨設(shè)md5哈希函數(shù)為md5(),用戶明文密碼為password),也無(wú)法通過(guò)倒推得知用戶的明文密碼,只能暴力窮舉猜測(cè)用戶的密碼。

其次,就算攻擊者不知道password,只知道md5(password),也足夠了,他只要向服務(wù)器發(fā)送md5(password)便能通過(guò)認(rèn)證。而且驗(yàn)證的過(guò)程仍為明文對(duì)比,只是從對(duì)比明文密碼變成對(duì)比明文密碼的哈希值。為了解決這個(gè)問(wèn)題,有人提出給密碼“加鹽”:服務(wù)器既不存儲(chǔ)明文密碼password,也不存儲(chǔ)md5(password),而是存儲(chǔ)md5(password)salt,這個(gè)salt即“鹽”。用戶每次登陸時(shí),服務(wù)器先生成一個(gè)動(dòng)態(tài)的、短時(shí)間內(nèi)不會(huì)重復(fù)的salt發(fā)送給用戶,然后用戶將md5(md5(password) + salt)發(fā)回給服務(wù)器,服務(wù)器經(jīng)過(guò)同樣的運(yùn)算后對(duì)比結(jié)果,一致則通過(guò)驗(yàn)證。這樣一來(lái),攻擊者就算截獲了saltmd5(md5(password) + salt),也無(wú)法倒推出md5(password),同時(shí)salt一經(jīng)使用,就會(huì)失效,攻擊者就無(wú)法通過(guò)重新發(fā)送md5(md5(password) + salt)來(lái)偽裝成用戶。

但上述做法有個(gè)問(wèn)題(至少一個(gè)問(wèn)題):設(shè)置密碼時(shí),用戶必須告知服務(wù)器md5(password),同時(shí)服務(wù)器上會(huì)明文存儲(chǔ)md5(password),如果設(shè)置密碼時(shí)md5(password)被截獲,或服務(wù)器的數(shù)據(jù)庫(kù)被入侵,攻擊者就會(huì)得知md5(password),從而就可以偽裝成用戶通過(guò)密碼驗(yàn)證了。而且,如果這個(gè)用戶在其它網(wǎng)站也使用了一樣的密碼(這是很常見(jiàn)的),其它網(wǎng)站又剛好使用了一樣的密碼驗(yàn)證方式,攻擊者就能同時(shí)獲得該用戶在多個(gè)網(wǎng)站的授權(quán)(撞庫(kù))。這個(gè)問(wèn)題的根本原因是設(shè)計(jì)者沒(méi)有擺脫“明文密碼”,用md5(password)來(lái)代替明文密碼與直接使用明文密碼沒(méi)有太大區(qū)別,因此有人提出,我們不要用md5(password),改用md5(password + salt)吧。這里的salt不是前面的salt,前面的是“動(dòng)態(tài)鹽”,現(xiàn)在所說(shuō)的是“靜態(tài)鹽”,為了區(qū)分,用dsalt代表動(dòng)態(tài)鹽,用ssalt代表靜態(tài)鹽。那么登陸方式就變成:服務(wù)器存儲(chǔ)md5(password + ssalt)和與之配套的靜態(tài)鹽ssalt(靜態(tài)鹽在設(shè)置密碼時(shí)配套生成),登陸時(shí),服務(wù)器動(dòng)態(tài)生成隨機(jī)的動(dòng)態(tài)鹽dsalt,將ssaltdsalt一同發(fā)給用戶,用戶將md5(md5(password + ssalt) + dsalt)發(fā)回給服務(wù)器,服務(wù)器進(jìn)行同樣的運(yùn)算,結(jié)果一致則驗(yàn)證通過(guò)。這樣一來(lái),就算攻擊者知道了md5(password + ssalt),也只是攻破了這個(gè)用戶在一個(gè)網(wǎng)站上的賬戶,而不能攻破該用戶使用的其它網(wǎng)站的賬戶——因?yàn)楣粽卟荒芡ㄟ^(guò)md5(password + ssalt)倒推出md5(password),且對(duì)于其它網(wǎng)站,靜態(tài)鹽ssalt也是不同的,通過(guò)md5(password + ssalt1)無(wú)法推出md5(password + ssalt2)。

如果你不想讓md5(password + ssalt)被截獲,你可以使用非對(duì)稱(chēng)加密(詳情自行搜索),但非對(duì)稱(chēng)加密對(duì)中間人攻擊(詳情自行搜索)無(wú)能為力,為了使非對(duì)稱(chēng)加密能夠抵抗中間人攻擊,人們又搞出了基于信任的一套機(jī)制(詳情自行搜索),但信任又是可以背叛的……所以說(shuō)沒(méi)有絕對(duì)的安全。

感興趣可以自學(xué)密碼學(xué)。

悶油瓶 回答

可以考慮類(lèi)似jsfiddle或者codepen一樣放到云端運(yùn)行,還有一個(gè)stakblitz是我覺(jué)得目前最好的在線js IDE,具有類(lèi)似VS Code的代碼提示,并且可以自動(dòng)下載添加npm依賴

table的toggleRowExpansiontoggleRowSelection可以做到。好好看下文檔。這是我寫(xiě)的一個(gè)demo,你參考下。示例

撥弦 回答

Just for debugging purpose

所以,問(wèn)你自己,是要調(diào)試,還是用于生產(chǎn)環(huán)境。

菊外人 回答

1、bean2: {name:''}

2、{ required: true, message: '請(qǐng)輸入名稱(chēng)', trigger: 'change'}

小眼睛 回答

gulp是需要項(xiàng)目執(zhí)行的,所以你全局安裝了gulp還是不能執(zhí)行,需要當(dāng)前項(xiàng)目也安裝才能執(zhí)行構(gòu)建:npm install gulp --save-dev

尐潴豬 回答

應(yīng)該是網(wǎng)絡(luò)問(wèn)題,等了兩小時(shí),什么都沒(méi)做,莫名就好了。不知道npm run dev 具體實(shí)踐是怎么樣的,希望懂的人可以解釋解釋。

嫑吢丕 回答

npm run build, 就會(huì)用 production 模式 build ,還會(huì)加上 service worker 之類(lèi)的東西,

代碼會(huì)壓縮并生成在 build 目錄下,直接發(fā)布就好了

下墜 回答

undefined不是 understand嗎?
如果是 undefined

var page= $(#addli option:selected).val();
console.log(page)

之間加個(gè)判斷

if(page){
page = 1
}

不歸路 回答

用了傳統(tǒng)的笨辦法 + 隱藏滾動(dòng)條

.mall {

overflow-y: auto;
height: 550px;

}
.mall::-webkit-scrollbar {display:none}

笑忘初 回答

不妨先用 vue-devtools 檢查下…?

苦妄 回答

做IE的兼容不僅會(huì)使開(kāi)發(fā)效率降低,還有造成頸肩腰椎等部位疼痛或者是脫發(fā),痔瘡等問(wèn)題。

PS:亂說(shuō)的。最理想的前端開(kāi)發(fā)就是不需要顧及css的兼容性,兼容性讓預(yù)處理工具去做,前端只要負(fù)責(zé)邏輯就好

不歸路 回答
start /b laravel-echo-server start  >websocket_log.txt & 

改成這樣試試,注意后面的 &

痞性 回答

敢問(wèn)如何解決的

維她命 回答

我改了配置不報(bào)錯(cuò) 但是引用sass文件還是說(shuō)沒(méi)有配置報(bào)錯(cuò)

  webpackConfig.module.rules.push({
  test: /\.module\.sass$/,
  use: path.join(path.dirname(require.resolve('extract-text-webpack-plugin')), 'loader.js') + 'postcss-loader!'+ 'sass-loader'
});
webpackConfig.module.rules.forEach(function(use, index) {
  if (typeof use.test === 'function' && use.test.toString().indexOf('\\.sass$') > -1) {
    use.include = /node_modules/;
    use.test = /\.sass$/;
  }
  // if (use.test.toString() === '/\\.module\\.sass$/') {
  //   use.exclude = /node_modules/;
  //   use.test = /\.sass$/;
  // }
});

可以直接在roadhogrc 里面進(jìn)行布爾值的配置

耍太極 回答

你30度一個(gè)也就是放12個(gè),就做個(gè)判斷看liSize是否大于12,是的話就用360/liSize*i,否則就30*i

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            .zh-circle{
                width: 300px;
                height: 300px;
                border: 1px solid red;
                border-radius: 50%;
                list-style: none;
                position: relative;
                margin: 300px;
            }
            
            .zh-circle li{
                width: 30px;
                height: 30px;
                border: 1px solid red;
                border-radius: 50%;
                position: absolute;
                top: 50%;
                left: 50%;            
                margin: -15px 0 0 -15px;
                transform-origin:50% 50%; 
            }
        </style>
    </head>
    <body>
        <ul class="zh-circle">
            
        </ul>
        <script src="jquery-2.1.0.js"></script>
        <script>
            var liSize = 14,
                li = '';
                if(liSize>12){
                    for(var i=0; i<liSize; i++) {
                        li += '<li style="transform: rotate('+360/liSize*i+'deg) translate(150px)"></li>';
                    }
                }else{
                    for(var i=0; i<liSize; i++) {
                     li += '<li style="transform: rotate('+30*i+'deg) translate(150px)"></li>';
                    }
                }
           
            $('.zh-circle').html(li);
        </script>
    </body>
</html>