『壹』 javaweb 中怎樣利用hashmap 怎樣實現用戶不重復注冊 (最好有具體實例)
是可以的,順便B視一下樓上說的要遍歷MAP的說法。那樣是誤導。哈希表的優勢是快速定位和查找,缺點就是遍歷,所以一般情況下要避免對哈希表進行遍歷。
哈希表最重要的原理就是採用鍵-值對存儲。值是對象,鍵就是給這個對象取個名字。然後存起來。
這種存儲是唯一並排它的。 比方說第一次你存了一個對象取個鍵名為「AAA」,下次你又想存一個對象也取名為「AAA」,那麼成功後,原來那個對象將會被新的對象替換。
換言之,表中永遠只會有一個以「AAA」命名的對象存在。 新存一個,舊的那個就丟了。
當客戶端發來注冊請求時,會發過來想要取的名字,後台得到這個名字後從資料庫中進行SQL查詢利用Like語法,查出所有類似這個名字的所有用戶。 這些用戶將會以一個集合的形式存在。
你可以將集合轉存在於哈希表中, 該哈希表以用戶名為鍵值,以用戶本身為對象存在。
Hashtable table = XXX;//你己經得到的用戶表
boolean hasContainsName= table.containsKey("youname");
if(hasContainsName == true){
//注冊失敗,己存在用戶
}
『貳』 關於webpack替換文件hash的問題,有人有過這方面經驗嗎
關於webpack替換文件hash的問題,
HRESULTRegisterAppId(boolbService=false)throw();
HRESULTPreMessageLoop(intnShowCmd)throw();
HRESULTPostMessageLoop()throw();
voidOnStop()throw();
voidOnPause()throw();
voidOnContinue()throw();
};
HRESULTCPureSslMole::RegisterAppId(boolbService)throw()
{
HRESULThr=S_OK;
BOOLres=__super::RegisterAppId(bService);
if(bService)
{
if(IsInstalled())
{
『叄』 Web前端密碼加密是否有意義
密碼在前端加密完全沒有意義,對密碼系統的安全性不會有任何提高,反而會引發不必要的麻煩。首先,做前端開發的人需要知道,前端系統的控制權是完全在用戶手裡的,也就是說,前端做什麼事情,用戶有完全的控制權。假設如同 @陳軒所說,前端做過了md5,後台就不用做了,這個做法會有什麼後果?如果某一天,這個系統的資料庫泄露了,黑客就直接拿到了每個用戶的密碼md5值,但此時,由於黑客知道密碼是在前端進行哈希的,所以他不需要爆破出該md5對應的原文是什麼,而是直接修改客戶端向伺服器發出的請求,把密碼欄位換成資料庫中MD5就可以了,由於與資料庫中記錄一致,直接就會登錄成功。這跟直接存儲明文密碼沒有任何區別!!!所以不管前端是不是加密了密碼,後台使用安全的哈希演算法對內容再次轉換是非常有必要的。(MD5可不行,要用bcrypt,我之前回答過一個類似的:隨著顯卡性能的高速發展,目前的快速Hash演算法是否已經變得不夠安全了?)這個回答還有一個人贊同,希望大家別被錯誤答案誤導了。另外一個答案 @林鴻所說,在非安全HTTP連接上,可以防止原始密碼被竊聽。但問題在於由於你的登錄系統接受的哈希過的密碼,而不是原文,竊聽者根本不需要原始密碼,只要通過哈希結果就可以偽造請求登錄系統。這樣做只能防止被竊聽到原文的密碼被攻擊者用在社會學攻擊上,而不能改善該網站的安全性。所以不管前端是不是加密了密碼,使用HTTPS安全連接進行登錄都是非常有必要的。以上我說的兩點,合起來看就是:不管前端是否加密了密碼,都不能以此為假設,讓後端設計的安全等級下降,否則就會有嚴重的安全問題。實際上,前端進行密碼加密,可以看做幫助用戶多進行了一次原文的轉換,不管用了什麼加密演算法,算出來的結果都是密碼原文,你該如何保護用戶的原始密碼,就該如何保護此處的加密結果,因為對你的登錄系統來說,它們都是密碼原文。以上這些,說明了密碼加密是沒有什麼意義的,接下來,我要說明前端加密會帶來什麼問題。有些人會認為前端進行了加密,可以降低後台的安全性需求,這種錯誤的觀念會造成系統的安全漏洞。實際上,你不能對前端做任何的假設,所有跟安全相關的技術,都必須應用在後台上。前端進行加密會造成頁面需要js腳本才能運行,那麼假設你的系統需要兼容不能運行js的客戶端,就必須再設計一個使用原文的登錄介面。由於前端是不是加密,所有安全機制都必須照常應用,所以為系統增加這樣的復雜性是完全沒必要的,即使傳輸明文密碼,只要正確使用了HTTPS連接和伺服器端安全的哈希演算法,密碼系統都可以是很安全的。
『肆』 web應用中的注入漏洞主要有哪幾種
網路發展至今,他的高端我們都見識過,但是網路安全也是一直以來不變的話題,怎樣能使網路更加安全呢?如何構建一個安全的Web環境,是應該考慮的事情。該選擇哪些安全工具呢?我們可以再危險發生之前,先測試一下自己系統中的漏洞。為大家推薦10大Web漏洞掃描程序。 1. Nikto 這是一個開源的Web伺服器掃描程序,它可以對Web伺服器的多種項目進行全面的測試。其掃描項目和插件經常更新並且可以自動更新。Nikto可以在盡可能短的周期內測試你的Web伺服器,這在其日誌文件中相當明顯。不過,如果你想試驗一下,它也可以支持 LibWhisker的反IDS方法。不過,並非每一次檢查都可以找出一個安全問題,雖然多數情況下是這樣的。有一些項目是僅提供信息類型的檢查,這種檢查可以查找一些並不存在安全漏洞的項目,不過Web管理員或安全工程師們並不知道。 2. Paros proxy 這是一個對Web應用程序的漏洞進行評估的代理程序,即一個基於Java的web代理程序,可以評估Web應用程序的漏洞。它支持動態地編輯/查看 HTTP/HTTPS,從而改變cookies和表單欄位等項目。它包括一個Web通信記錄程序,Web圈套程序,hash 計算器,還有一個可以測試常見的Web應用程序攻擊的掃描器。 3. WebScarab: 它可以分析使用HTTP和HTTPS協議進行通信的應用程序,WebScarab可以用最簡單地形式記錄它觀察的會話,並允許操作人員以各種方式觀查會話。如果你需要觀察一個基於HTTP(S)應用程序的運行狀態,那麼WebScarabi就可以滿足你這種需要。不管是幫助開發人員調試其它方面的難題,還是允許安全專業人員識別漏洞,它都是一款不錯的工具。 4. WebInspect: 這是一款強大的Web應用程序掃描程序。SPI Dynamics的這款應用程序安全評估工具有助於確認Web應用中已知的和未知的漏洞。它還可以檢查一個Web伺服器是否正確配置,並會嘗試一些常見的 Web攻擊,如參數注入、跨站腳本、目錄遍歷攻擊等等。 5. Whisker/libwhisker : Libwhisker是一個Perla模塊,適合於HTTP測試。它可以針對許多已知的安全漏洞,測試HTTP伺服器,特別是檢測危險CGI的存在。 Whisker是一個使用libwhisker的掃描程序。 6. Burpsuite: 這是一個可以用於攻擊Web應用程序的集成平台。Burp套件允許一個攻擊者將人工的和自動的技術結合起來,以列舉、分析、攻擊Web應用程序,或利用這些程序的漏洞。各種各樣的burp工具協同工作,共享信息,並允許將一種工具發現的漏洞形成另外一種工具的基礎。 7. Wikto: 可以說這是一個Web伺服器評估工具,它可以檢查Web伺服器中的漏洞,並提供與Nikto一樣的很多功能,但增加了許多有趣的功能部分,如後端 miner和緊密的Google集成。它為MS.NET環境編寫,但用戶需要注冊才能下載其二進制文件和源代碼。 8. Acunetix Web Vulnerability Scanner : 這是一款商業級的Web漏洞掃描程序,它可以檢查Web應用程序中的漏洞,如SQL注入、跨站腳本攻擊、身份驗證頁上的弱口令長度等。它擁有一個操作方便的圖形用戶界面,並且能夠創建專業級的Web站點安全審核報告。 9. Watchfire AppScan: 這也是一款商業類的Web漏洞掃描程序。AppScan在應用程序的整個開發周期都提供安全測試,從而測試簡化了部件測試和開發早期的安全保證。它可以掃描許多常見的漏洞,如跨站腳本攻擊、HTTP響應拆分漏洞、參數篡改、隱式欄位處理、後門/調試選項、緩沖區溢出等等。 10. N-Stealth: N-Stealth是一款商業級的Web伺服器安全掃描程序。它比一些免費的Web掃描程序,如Whisker/libwhisker、 Nikto等的升級頻率更高。還要注意,實際上所有通用的VA工具,如Nessus, ISS Internet Scanner, Retina, SAINT, Sara等都包含Web 掃描部件。N-Stealth主要為Windows平台提供掃描,但並不提供源代碼。
『伍』 Web前端密碼加密是否有意義
在前端對密碼做一次MD5,看起來是防止明文傳輸了,事實上只有一種情況下它可以提高用戶的安全性,那就是用戶在別的網站上也用和你的網站一樣的密碼。並且在任何情況下都提高不了你自己網站的安全性。前面說的傳輸過程、內存里、日誌里……這些地方沒有明文密碼,其實都只能保護用戶本身的利益,對於自身服務的安全性是沒有提高的。因為,既然傳輸過程不是加密的,那麼包隨便發,至於發一個abc123,還是發一個,對你的程序沒有任何的區別,這時候你的程序都是小綿羊。這個過程可以看做,你的用戶都用了32位字元串的密碼,如是而已。從事實意義上講,在所有網站上用同樣密碼的用戶非常多,所以可以勉勉強強的說,這是有一丁丁點的意義的。但即使在前端做了簽名,因為hash暴露了,也還是很容易被撞庫。但是,對安全性沒有提高,就不做了嗎?當然要做,因為要應付審計。
『陸』 在web前端里什麼是hash
1.[hash]是文件的哈希值,用來打版本號的,[chunkhash]是模塊的哈希值,同樣可以放在模塊的文件名中。
2.webpack自帶生成hash的功能,可以綁定事件拿到hash對應表。
『柒』 webpack中的hash和chunkhash的區別
1. hash與chunkhash
首先我們先看一下官方文檔對於兩者的定義:
[hash] is replaced by the hash of the compilation.
hash代表的是compilation的hash值。
[chunkhash] is replaced by the hash of the chunk.
chunkhash代表的是chunk的hash值。
怎麼樣,我還挺厲害的吧。如果想知道更多,你可以去後盾人平台多看一些視頻。
『捌』 Shell腳本根據Hash值判斷web伺服器頁面是否被更改
當頁面被惡意木馬攻擊更改後,監控狀態腳本並不能檢測出異常,但是Web的頁面已經存在相當大的安全隱患.所以能不能尋找到一種方法判斷自己所負責的Web伺服器頁面內容是否遭到惡意木馬的攻擊和修改顯得十分重要.通過Hash值的方法可以非常高效的檢測到WEB伺服器頁面的數據內容是否完整,如果頁面內容被惡意木馬更改,新頁面的Hash值是不同於原始的Hash值的,我們就可以以此作為判斷的依據!
獲取Hash值的方法:
md5sum /var/www/html/index.html
url="Web伺服器頁面地址"
如 http://127.0.0.1/index.html
date=$(date +"%Y-%m-%d %H:%M:%S")
source_hash="獲取到的原始Hash值"
url_hash=$(curl -s $url | md5sum | cut -d ' ' -f1)
if [ "$url_hash" != "$source_hash" ];then
mail -s Hash is changed root@localhost <<- EOF
檢測時間為:$date
數據完整性檢驗失敗,Hash值不同,$url,頁面數據被更改
請盡快排查異常
EOF
else
cat >> /var/log/http_check.log <<-EOF
$date "$url,數據完整性校驗正常"
EOF
fi
chmod +x /check_http_hash.sh
/check_http_hash.sh
cat /var/log/http_check.log
2019-11-23 15:38:55 "http://127.0.0.1/index.html,數據完整性校驗正常"
修改/var/www/html/index.html文件的內容,模擬網站頁面被更改的情況!
/check_http_hash.sh
檢測時間為:2019-11-23 16:00:08
數據完整性檢驗失敗,Hash值不同,http://127.0.0.1/index.html,頁面數據被更改
請盡快排查異常
這一個腳本跟上一篇文章的 http服務狀態監測腳本 兩者相輔相成,也可以考慮把它們兩個合並成同一個腳本!並且一同添加到周期性計劃任務中!
『玖』 webpack打包加hash怎麼自動更新
不太明白你的意思
首次使用Webpack, 用CLI, 即Command Line Interface
→ 確認是否安裝了NodeJS
npm -v
→ 安裝 Webpack
npm install webpack -g
→ 創建一個簡單的網站
.....webpacktest/
..........app.js
..........index.html
→ 導航到webpacktest所在文件夾
→ 對app.js文件使用webpack
webpack ./app.js bundle.js
→ 我們看到在webpacktest目錄下多了一個bundle.js文件
→ 現在,可以在index.html中引用bundle.js文件,而不是app.js文件
■ 在項目中添加配置文件
→ 在項目根目錄下創建名稱為webpack.config.js文件
當設置好webpack.config.js文件後,每次我們導航到項目,只要使用webpack這一個命令就可以使用各項功能了。
mole.exports = {
entry: "./app.js",
output: {
filename: "bundle.js"
}
}
→ 命令行來到需要Webpack的網站下
→ 直接輸入webpack命令
webpack
■ 啟用Webpack觀察者模式
當webpack.config.js的配置發生變化,如果每次都要手動輸入webpack命令來生成js文件的話,顯得相對麻煩一些。Webpack為我們提供了觀察者模式,啟用後,任何的webpack.config.js中的變化將接受觀察,自動生成最終的js文件。
→ 命令行來到需要Webpack的網站下
→ 啟用觀察者模式
webpack --watch
→ 在webpack.config.js中添加watch欄位,並設置成true
mole.exports = {
entry: "./app.js",
output: {
filename: "bundle.js"
},
watch: true
}
→ 這樣,每次修改保存webpack.config.js中引用文件,bundle.js的文件會自動更新。
■ 安裝啟用Webpack DevServer
→ 導航到目標網站目錄
→ 輸入npm命令安裝Webpack DevServer
npm install webpack-dev-server -g
→ 輸入webpack-dev-server命令
webpack-dev-server
→ 看到大致如下內容
http://localhost:8080/webpack-dev-server
webpack result is served from /
cotent is served from D:\...
Hash:...
Version:webpack1.12.4
Time:94ms
...
webpack: bundle is now VALID.
→ 在瀏覽器中輸入:http://localhost:8080/webpack-dev-server/
同時顯示app.js文件中console.log和document.write的內容。
→ 修改webpack.config.js中依賴的文件並保存,瀏覽器中的內容就會自動更新
→ 如果不想顯示console.log內容呢?
→ 在瀏覽器中輸入:http://localhost:8080/
→ 此時,再修改webpack.config.js中依賴的文件並保存,瀏覽器的內容卻不會更新?
→ 再次回到命令行,加入一個inline的flag
webpack-dev-server --inline
→ 此時,如果修改webpack.config.js中依賴的文件並保存,瀏覽器中的內容就會自動更新了☺
■ Bundling多個文件
→ 在項目下再添加一個login.js文件
console.log('login loaded');
→ app.js中引用login.js文件
require('./login');
document.write("Welcome to Big Hair Concerts!!Baby");
console.log('App loaded');
→ 在瀏覽器中輸入:http://localhost:8080/
可以看到變化。
→ 在項目下再添加一個utils.js文件
console.log('logging from the utils.js file...');
→ 來到webpack.config.js下配置如下:
mole.exports = {
entry: ["./utils","./app.js"],
output: {
filename: "bundle.js"
},
watch: true
}
→ 命令行導航到當前項目下
→ 重新啟用Webpack DevServer
webpack-dev-server
→ 在http://localhost:8080/中體現了相應的變化