一種針對Web頁面數據的摘要提取方法及檢測方法與流程
2023-05-27 22:50:16 2
本發明涉及計算機數據安全技術,尤其涉及Web頁面的數據安全。
背景技術:
通常,在一個Web系統中包括前端網頁和後端伺服器,終端用戶登錄前端網頁從而向後端伺服器提交表單數據。在提交數據及後續存儲過程中,存在表單數據發生不當改變的可能性,例如在無線傳輸過程中遭遇了噪聲幹擾,又例如管理員的誤操作,以及黑客惡意篡改數據等。上述表單數據的改變,會導致通過前端網頁再次呈現給用戶的數據與用戶原本提交的表單存在不一致的情況。尤其是在提交大量表單數據的情況下,用戶將難以迅速地感知到數據發生了變化,從而為用戶的業務帶來損失。
在現有技術中,為了克服上述缺陷,通常會採用摘要算法將用戶所輸入的全部數據作為一個整體進行校驗。然而,上述方案並不能定位到是哪一塊輸入數據發生了改變,也不能檢測出數據的順序是否發生了錯亂。
技術實現要素:
因此,本發明的目的在於克服上述現有技術的缺陷,提供一種針對Web頁面數據的摘要提取方法,其中所述Web頁面劃分成不同層次,所述方法包括:
1)基於Web頁面的輸入數據,生成最低層次的摘要;
2)基於前一層次的摘要,生成當前層次的摘要;
3)重複步驟2),直到生成最高層次的摘要;
4)根據全部層次的摘要,生成所述Web頁面數據的Web摘要。
優選地,根據所述方法,其中步驟1)包括:
對Web頁面域中的輸入數據提取摘要,生成域的摘要。
優選地,根據所述方法,其中步驟2)包括:
根據所述Web頁面的區中所包含的域,對其中的域的摘要提取摘要,生成區的摘要;
優選地,根據所述方法,其中步驟3)包括:
根據所述Web頁面中所包含的區,對其中的區的摘要提取摘要,生成頁面的摘要。
優選地,根據所述方法,其中步驟4)包括:
將生成的所述域的摘要、所述區的摘要、所述頁面的摘要拼接成字符串,生成Web摘要。
優選地,根據所述方法,其中步驟4)還包括:
在所述字符串中設置間隔符,間隔相鄰的所述域的摘要和所述區的摘要和/或所述頁面的摘要。
優選地,根據所述方法,其中步驟4)還包括:
在所述字符串中為所述域的摘要和所述區的摘要和所述頁面的摘要設置標識欄位,以標識所述域和所述區和所述頁面之間的層屬關係。
優選地,根據所述方法,其中步驟4)中所述標識欄位包括:
所述域的編號及其所屬區和/或頁面的編號,和
所述區的編號及其所屬頁面的編號,和
所述頁面的編號。
並且,本發明還提供了一種基於上述任意一項方法,檢測Web頁面數據變化的方法,包括:
1)獲得需要訪問的Web頁面數據及其相應的Web摘要;
2)採用與生成所述Web摘要相同的方法,對所獲得的Web頁面數據提取第二摘要;
3)將所述第二摘要與所述Web摘要進行比對,確定所獲得的Web頁面數據相較於所述輸入Web頁面的數據是否發生變化。
優選地,根據所述方法,其中步驟3)包括:
將第二摘要與所述Web摘要中的對應欄位進行直接比對:
如不相同,則報告該欄位所定位的數據發生異常。
優選地,根據所述方法,其中步驟3)包括:
將第二摘要與所述Web摘要中的相應欄位進行交叉比對:
如所述Web摘要中的欄位與所述第二摘要中的非對應欄位發生了交換,則報告該兩個欄位所定位的數據發生順序錯亂。
以及,一種檢測用戶輸入Web頁面的數據的變化的裝置,其中所述Web頁面劃分成不同層次,所述裝置包括:
層次加密上傳模塊,用於基於Web頁面的輸入數據,生成最低層次的摘要;以及基於前一層次的摘要,生成當前層次的摘要,直到生成最高層次的摘要;以及根據全部層次的摘要,生成所述Web頁面數據的Web摘要;
驗證模塊,用於對取回的數據提取第二摘要,並比對所述Web摘要與所述第二摘要,以檢驗取回的所述數據相較於所述輸入數據是否發生變化。
與現有技術相比,本發明的優點在於:
能夠根據網頁的結構分層次地對用戶輸入網頁的數據提取摘要,以在再次訪問該數據時,通過所提取的摘要確定網頁中的哪一部分數據發生了改變,以及數據的位置是否發生了更改。從而為用戶數據的一致性與完整性驗證提供支持,即便是在用戶輸入大量數據的情況下,也可以迅速地向用戶報告所訪問的數據發生了何種改變。
附圖說明
以下參照附圖對本發明實施例作進一步說明,其中:
圖1是根據本發明的一個實施例,對Web頁面數據提取摘要的流程圖;
圖2示出了對用戶輸入Web頁面的數據的摘要以及從伺服器下載的數據的摘要進行比較的一個示例;其中,s0、s1、s2、分別表示用戶輸入該Web頁面數據的域摘要、區摘要、頁面摘要,s0』、s1』、s2』分別為從伺服器下載的數據的域摘要、區摘要、頁面摘要,網頁1包含區1和區2,區1包含域1、2,區2包含域3、4;
圖3是根據本發明的一個實施例,檢驗Web頁面所上傳數據的變化的方法的流程圖;
圖4是一個典型的有大量表單需用戶填寫的web頁面簡化樣例,其中依據該web頁面的結構,示出了表單域ID值的取值規則;
圖5是根據本發明的一個實施例檢驗Web頁面所上傳數據變化的模塊示意圖。
具體實施方式
下面結合附圖和具體實施方式對本發明作詳細說明。
通常,為了驗證Web頁面的數據是否發生改變,會針對需要上傳至伺服器的數據提取第一摘要;在從伺服器下載數據後,對所下載的數據提取第二摘要;將該第一摘要與該第二摘要進行比對,如果兩者不一致,則說明數據發生改變。本申請文件中的「提取」指的是將數據作為摘要算法的輸入,將其輸出作為摘要。
然而,現有技術往往是針對用戶輸入Web頁面的全部數據來提取摘要,而這種方式只能用於判斷上傳至伺服器的數據是否發生改變,不能用於確定Web頁面中的哪一部分數據發生了改變,也不能確定數據發生了什麼樣的改變。例如,不能確定原本處於Web頁面中某一特定域的數據被修改到了該Web頁面的另一個域的位置上。當用戶輸入大量數據的情況下,將很難由用戶自行判斷發生了這些改變。
對此,發明人通過研究發現,通常情況下,Web頁面具有通用的結構劃分,即在一個Web頁面中包含多個區,每個區中包含多個域,圖4示出了一個web頁面的簡化樣例。可以將域看作是Web頁面結構中最低的層次,區屬於比域高一級的層次,而頁面則是更高層次。對此,發明人認識到可以通過按照域、區、Web頁面這幾個層次逐步地提取第一摘要。當再次訪問用戶輸入該Web頁面的數據時,採用相同的規則分層次地對通過訪問獲得的數據提取摘要(本申請文件中稱為第二摘要),並將第一摘要和第二摘要進行比對,從而可以根據比對的結果判斷所訪問的數據是否發生改變,以及對發生改變的數據進行定位,以及判斷定位到的數據發生了何種改變。
下面將通過具體的實施例,詳細介紹根據本發明的針對Web頁面數據提取摘要的方法。根據本發明的一個實施例,所述方法包括:
S1.對用戶向Web頁面的域中輸入的數據,提取域的摘要。
在這個步驟中,可以針對各個域,將所輸入的數據作為摘要算法的輸入。在本發明中可以採用任一現有的摘要算法,例如CRC32或MD5算法。
參考圖2以及圖4中的示例,可以針對網頁1中的全部4個域分別提取摘要,生成與域1、2、3、4分別對應的摘要字符串a、b、c、d。
S2.在生成了域的摘要之後,根據區中所包含的域,對相應的域的摘要提取摘要,以作為區的摘要。
在這個步驟中,可以針對各個區,將所述區包含的域的摘要作為執行摘要算法的輸入,以獲得所述區的摘要。其中,可以針對所述區包含的全部域的摘要提取摘要,也可以僅對所包含的部分域的摘要提取摘要。
根據本發明的一個實施例,如果通過對區中包含的部分域的摘要提取摘要,而非針對用戶輸入區中的全部數據提取摘要,在實現分層次地提取摘要的同時,還可以大大縮減算法的複雜度。然而,應當理解,在區中所輸入的數據量較少的情況下,也可以針對用戶輸入區中的全部數據提取區的摘要。
仍以圖2以及圖4為例,可以將字符串a和b作為摘要算法的輸入,提取區1的摘要e;將字符串c和d作為摘要算法的輸入,提取區2的摘要f。
S3.在生成了區的摘要之後,根據所述Web頁面中所包含的區,對相應的區的摘要提取摘要,以作為頁面的摘要。
根據本發明的一個實施例,與步驟S2相類似,步驟S3同樣通過將頁面中所包含的部分區的摘要用作摘要算法的輸入來生成頁面的摘要,達到縮減算法複雜度的效果。
仍以圖2為例,可以針對字符串e和f提取區1的摘要g。
S4.根據所獲得的域的摘要、區的摘要、頁面的摘要,得到用於檢驗所述Web頁面數據發生的變化的Web摘要。
根據本發明的一個實施例,將在步驟S1-S3中生成的域的摘要、區的摘要、頁面的摘要拼接成一個字符串。
繼續以圖2為例,a、b、c、d、分別為域1、2、3、4的摘要,它們的集合構成了域摘要的字符串s0;區1的摘要e和區2的摘要f構成了區摘要的字符串s1;網頁1的摘要g為字符串s2。所述s0、s1、s2共同組成了Web摘要(即圖中的A)。
在實際使用拼接而成的Web摘要來檢驗Web頁面數據發生的變化時,需要從Web摘要中識別出其中的頁面摘要、區摘要、域摘要的欄位,並且還需要確定頁面、區、域之間的包含關係。下面將通過具體的實施例介紹如何識別出Web摘要中的各個欄位。
根據本發明的一個實施例,在通過摘要算法獲得的摘要為固定長度的情況下,直接將全部頁面摘要、區摘要、域摘要拼接成一個字符串,以作為Web摘要。以採用CRC32算法為例,通過該算法生成的摘要長度均為32比特,可採用8位的十六進位數來表示;參考圖2中的示例,可以生成32位長度的s0、16位長度的s1、8位長度的s2,即總共56位長度的Web摘要(A)。當需要使用該Web摘要時,可以從該Web摘要中每次讀取固定長度的欄位以識別其中的頁面摘要、區摘要、域摘要。因此,採用直接拼接多層次摘要以生成Web摘要的方式,可以在生成Web摘要時所使用的摘要算法的輸出為固定長度、且在使用Web摘要時已知Web摘要中欄位的排列順序的情況下,實現對Web摘要中頁面摘要、區摘要、域摘要的識別。
此種方式的複雜度較低,尤其適用於Web頁面結構相對簡單的情況。對於Web頁面結構較為複雜的情況,更適合採用設置間隔的方式來實現對A中各個欄位的識別。
根據本發明的一個實施例,採用間隔符的方式來間隔頁面摘要、區摘要、域摘要的欄位,將全部頁面摘要、區摘要、域摘要、以及間隔符拼接成一個字符串,以作為Web摘要。以採用空格作為間隔符為例,可以採用一個空格來間隔屬於不同的區的域的摘要欄位,以及間隔屬於不同頁面的區的摘要欄位,採用兩個空格來間隔域的摘要和區的摘要,採用三個空格來間隔區的摘要和頁面的摘要。再次以圖2為例,a、b對應於區1而c、d對應於區2,因此在b、c之間增加一個空格;d屬於域的摘要而e為區的摘要,因此在d、e之間增加兩個空格;類似的,在f、g之間增加三個空格。由此,Web摘要A的字符串應當為:
「ab(空格)cd(空格空格)ef(空格空格空格)g」。
應當理解,在生成Web摘要時,還可以進一步在相鄰的摘要欄位之間增加間隔符,例如,進一步在a、b之間、c、d之間、和e、f之間增加其他間隔符,使得即便各個摘要欄位並非固定長度,也可以正確地區分出不同的摘要欄位。
當需要使用該Web摘要時,可以根據所讀取到的間隔符,例如一個空格、兩個空格、或三個空格等,確定正在讀取的欄位屬於哪一層次的摘要欄位,以及區分出屬於相同層次的摘要欄位。
採用設置間隔符的方式來生成Web摘要,可以在使用Web摘要時已知Web摘要中欄位的排列順序的情況下,實現對Web摘要中頁面摘要、區摘要、域摘要的識別。
根據本發明的進一步的實施例,還提供了一種基於間隔的Web摘要生成方式,使得在使用Web摘要時即便不知道Web摘要中欄位的排列順序,也能實現對Web摘要中頁面摘要、區摘要、域摘要的識別。在該實施例中,針對每個域和/或區和/或頁面的摘要欄位設置其層屬關係的標識(這裡的層屬關係指的是域、區、頁面之間的包含關係,例如一個域屬於哪個區及哪個頁面,一個區屬於哪個頁面),將全部頁面摘要、區摘要、域摘要、以及相應的標識拼接成一個字符串,以作為Web摘要。其中,針對域所設置的標識可以採用用於標識該域的編號、該域所屬區和所屬網頁的ID,針對區所設置的標識可以採用用於標識該區的編號、該區所屬網頁的ID,針對頁面所設置的表述可以採用用於標識該頁面的編號。在圖4中示出了針對域設置的ID的示例,可以看出域1處於網頁1的區1中,為域1所設置的ID為d1s1p1(即domain 1section 1page 1),表示表示域1為頁1的區1中編號為1的域,並且域2、3、4也採用類似的方式設置了ID值,同樣也可以為區1設置ID值s1p1,為區2設置ID值s2p1,為頁面1設置ID值p1(圖中未示出)。參考圖2,可以將圖4中的上述ID值設置在Web摘要(A)中每個域的摘要欄位之前或之後,例如,將Web摘要(A)設置為:
「a(d1s1p1)b(d2s1p1)c(d3s2p1)d(d3s2p1)e(s1p1)f(s2p1)g(p1)」。
當需要使用該Web摘要時,可以根據所讀取到的ID值,確定摘要欄位的身份,以及頁面、區、域之間的所述關係。
採用設置層屬關係的標識的方式來生成Web摘要,可以應對任意複雜程度的Web頁面結構,並且不必向使用該Web摘要對數據進行驗證的一方傳遞任何有關欄位排列順序的信息,便可以實現對Web摘要中頁面摘要、區摘要、域摘要的識別。此種生成Web摘要方式,可以採用任意順序排列其中的各個摘要欄位,相較於前述實施例的方案其具有更高靈活性和安全性。
在採用通過該實施例生成的Web摘要對數據進行一致性驗證時,還應當在對用戶輸入Web頁面的數據進行上傳時,將上述針對各個域和/或區和/或頁面設置的標識與所述數據之間的對應關係一併上傳,具體的驗證方法將在下述實施例中詳細介紹。此外,根據本發明的其他實施例,還可以將上述對域和/或區和/或頁面進行標識的方式與上述採用間隔符的方式相結合。
下面將通過具體的實施例詳細介紹根據本發明的驗證Web頁面所上傳數據的變化的方法,採用下述方法可以驗證當再次訪問數據時,該數據是否發生改變,以及在發生改變時,對發生改變的部分進行定位、判斷數據是否出現順序錯亂。
參考圖3,所述方法包括:
步驟1.接收用戶針對Web頁面所輸入的數據。
步驟2.針對Web頁面的結構,對用戶輸入的數據分層次地生成Web摘要(例如圖2示出的摘要A)。可以採用本發明的上述任意實施例中的方案來生成Web摘要A。應當理解,根據需要,在本發明中還可以僅執行針對域和區、或僅針對域和頁面、或僅針對區和頁面來提取摘要,以及可以僅針對用戶填寫到Web頁面的數據中的部分來提取摘要,以進一步降低方法的複雜度。
步驟3.根據本地的密鑰,將所生成的Web摘要(即圖2中的A)加密為密文。所述本地的密鑰可以是用戶輸入的密碼,也可以是由本地應用生成的密碼,本地密鑰將不會被上傳至伺服器。通過加密,可以保證所生成的摘要的安全性。
步驟4.將用戶針對Web頁面所輸入的數據上傳至伺服器。
根據本發明的一個實施例,對於在步驟2中採用上述直接拼接摘要欄位作為Web摘要(A)的方案,在步驟4中,將Web摘要(A)中欄位的排列順序、以及Web頁面結構的層屬關係上傳至伺服器。例如參考圖2,將Web摘要A的欄位順序即域1、域2、域3、域4、區1、區2、頁面1,以及域1、2屬於區1、域3、4屬於區2、區1、2屬於頁面1的層屬關係,以及每次讀取摘要欄位的長度8位,上傳並保存在伺服器上。
根據本發明的另一個實施例,對於在步驟2中採用上述在Web摘要(A)中設置間隔符的方案,在步驟4中,將Web摘要(A)中欄位的排列順序上傳至伺服器。例如參考圖2,將Web摘要A的欄位順序即域1、域2、域3、域4、區1、區2、頁面1,以及所採用的各個間隔符的含義,例如採用一個空格、兩個空格、三個空格等分別用於間隔哪些欄位,上傳並保存在伺服器上。
根據本發明的再一個實施例,對於在步驟2中採用上述在Web摘要(A)中設置ID的方案,在步驟4中,將相應的ID與域和/或區和/或頁面的對應關係上傳至伺服器,例如參考圖2和圖4,在用戶輸入域1的數據中增加d1s1p1的ID,將該ID隨數據一併上傳至伺服器,相應地對用戶輸入其他域和/或區和/或頁面的數據也增加對應的ID。
在此步驟4中,可以將所述密文也上傳至伺服器,也可以針對用戶再次登錄時使用同一臺電腦的情況而僅將Web摘要(A)或其密文保存在本地。
在完成了上述步驟1-4之後,便完成了對用戶所輸入的數據進行提取摘要以及將用戶所輸入的數據上傳至伺服器的步驟。
接下來,將介紹採用本發明的方法來判斷所期望再次訪問的數據發生了何種改變。
步驟5.從伺服器獲取用戶針對Web頁面所輸入的至少部分數據。根據本發明的一個實施例,這裡不必下載全部數據,可以僅獲取需要訪問的數據內容。在密文也被上傳至伺服器中的情況下,從伺服器下載所述密文。
步驟6.採用本地的密鑰,對密文進行解密,還原出Web摘要(即圖2所示出的摘要A』)(在沒有將密文上傳至伺服器的情況下,獲取Web摘要A)。
步驟7.採用與步驟2中相同的提取摘要的規則,對在步驟5中從伺服器獲取的所述數據提取摘要,以獲得圖2所示出的摘要B。
這裡所述相同的提取規則指的是,與在生成Web摘要(A)時,步驟5中所獲取的數據相對應的部分的規則。例如,參考圖2,根據需要,僅從伺服器下載了與域1對應的數據,則在步驟7中採用與生成摘要a相同的規則對所下載的數據提取摘要a』,並將摘要a』作為生成的摘要B。
步驟8.將Web摘要A』(或A)與摘要B進行比對,以確定所述數據發生了何種改變。
為了進行比對,應當首先從Web摘要A』(或A)中識別出其中的頁面摘要、區摘要、域摘要的欄位,並且確定頁面、區、域之間的包含關係。
根據本發明的一個實施例,對於在步驟2中採用上述直接拼接摘要欄位作為Web摘要(A)的方案,在步驟8中,根據Web摘要A』(或A)中欄位的排列順序,每次讀取固定長度的摘要欄位,識別出Web摘要A』(或A)中的頁面摘要、區摘要、域摘要。以圖2為例,逐次讀取8位欄位,首先讀取Web摘要A中後8位欄位作為網頁1的摘要g,繼續讀取其餘欄位中的後8位欄位作為區2的摘要f,以及繼續讀取區1的摘要e、域4的摘要d,依次類推,從而確定全部摘要欄位a-g。
根據本發明的一個實施例,對於在步驟2中採用上述在Web摘要(A)中設置間隔符的方案,在步驟8中,通過讀取到的間隔符,以及根據Web摘要A』(或A)中欄位的排列順序,識別出Web摘要A』(或A)中的頁面摘要、區摘要、域摘要。
以圖2為例,假設Web摘要A的字符串為:「ab(空格)cd(空格空格)ef(空格空格空格)g」,並且在生成該Web摘要時採用CRC32算法。則在讀取該Web摘要A時,首先將讀取的後8位欄位作為網頁1的摘要g;在讀到三個連續的空格時,確定隨後的欄位對應於區的摘要,繼續讀取其餘欄位中的後8位欄位作為區1的摘要f,以及隨後的8位作為區2的摘要e;類似地,在讀到兩個連續的空格時,確定隨後的欄位對應於域的摘要,同樣地通過讀取每8位欄位來確定域4的摘要d和域3的摘要c,在沒有讀取到單獨的一個空格時,確定d和c對應於區2,當讀取到單獨的一個空格時,確定隨後的域摘要b和a對應於區1。
同樣以圖2為例,假設Web摘要A的字符串為:「a(#)b(空格)c(#)d(空格空格)e(#)f(空格空格空格)g」。則在讀取該Web摘要A時,從該Web摘要的末位往前讀取,將遇到第一個間隔符即連續的三個空格之前的內容作為網頁1的摘要g;將在其餘欄位中遇到第二個間隔符即#之前的內容作為區1的摘要f,將在遇到連續的兩個空格之前的內容作為區2的摘要e;類似地,分別根據間隔符確定域4、3、2、1的摘要d、c、b、a。
根據本發明的一個實施例,對於在步驟2中採用上述在Web摘要(A)中設置ID的方案,在步驟8中,通過讀取到的ID,識別出Web摘要A』(或A)中的頁面摘要、區摘要、域摘要,以及Web頁面結構的層屬關係。
參考圖2和圖4,假設Web摘要A的字符串為:「a(d1s1p1)b(d2s1p1)c(d3s2p1)d(d3s2p1)e(s1p1)f(s2p1)g(p1)」。則在讀取該Web摘要A時,從該Web摘要的末位往前讀取,根據讀取到的標識p1確定哪些欄位屬於g,並且g是頁面1的摘要,類似地,讀取區2、1、域4、3、2、1的摘要欄位f、e、d、c、b、a,以及區1、2屬於頁面1,域3、4屬於區2,域1、2屬於區1。
在通過上述實施例的方式,確定Web摘要A』(或A)中的頁面摘要、區摘要、域摘要的欄位,以及確定頁面、區、域之間的包含關係之後,可以將摘要B與所述Web摘要A』(或A)進行比對。通過比對,定位到發生錯誤的區和/或域,以及是否出現數據的順序發生錯亂的情況。
下面將繼續參考圖2,介紹進行比對的方法。如圖2所示,其中a』、b』、c』、d』、e』、f』、g』為在摘要B中的域1、2、3、4的摘要、區1、2的摘要、以及網頁1的摘要,分別與Web摘要A』(或A)中的a、b、c、d、e、f、g相對應。
在進行比對時,首先對Web摘要A』(或A)與摘要B進行直接比對:
如果g=g』,則認為用戶數據沒發生改變,停止校驗,並向用戶報告數據未發生異常;
如果g≠g』,則進一步比較網頁1中的區摘要,
若f≠f』,則進一步比較區2中的域摘要,
若d≠d』,則向用戶報告網頁1區2域4中的數據發生異常,
若c≠c』,則向用戶報告網頁1區2域3中的數據發生異常,
若e≠e』,則進一步比較區1中的域摘要,
若b≠b』,則向用戶報告網頁1區1域2中的數據發生異常,
若a≠a』,則向用戶報告網頁1區1域1中的數據發生異常。
在進行比對時,除上述直接比對之外,還可以在數據發生異常的情況下,進一步進行交叉比較:
如果f≠f』並且e≠e』,則進行以下比較:
若e=f』且f=e』,則向用戶報告區1的數據和區2的數據發生順序錯亂;
若a=c』且c=a』,則向用戶報告區1域1部分的數據和區2域3部分的數據發生順序錯亂;
若a=d』且d=a』,則向用戶報告區1域1部分的數據和區2域4部分的數據發生順序錯亂;
若b=c』且c=b』,則向用戶報告區1域2部分的數據和區2域3部分的數據發生順序錯亂;
若b=d』且d=b』,則向用戶報告區1域2部分的數據和區2域4部分的數據發生順序錯亂;
若a=b』且b=a』,則向用戶報告區1域1部分的數據和區1域2部分的數據發生順序錯亂;
若c=d』且d=c』,則向用戶報告區2域3部分的數據和區2域4部分的數據發生順序錯亂;
如果f≠f』並且e=e』,則進行以下比較:
若c=d』且d=c』,則向用戶報告區2域3部分的數據和區2域4部分的數據發生順序錯亂;
若c=d』且d≠c』,則向用戶報告原本位於區2域3部分的數據被更改到區2域4的位置,並且區2域3部分的數據在順序發生錯亂後又發生了篡改;
若d=c』且c≠d』,則向用戶報告原本位於區2域4部分的數據被更改到區2域3的位置,並且區2域4部分的數據在順序發生錯亂後又發生了篡改;
如果f=f』並且e≠e』,則進行以下比較:
若a=b』且b=a』,則向用戶報告區1域1部分的數據和區1域2部分的數據發生順序錯亂;
若a=b』且b≠a』,則向用戶報告原本位於區1域1部分的數據被更改到區1域2的位置,並且區1域2部分的數據在順序發生錯亂後又發生了篡改;
若b=a』且a≠b』,則向用戶報告原本位於區1域2部分的數據被更改到區1域1的位置,並且區1域1部分的數據在順序發生錯亂後又發生了篡改。
通過步驟8中的上述比對,可以向用戶報告從伺服器所下載的數據相較於用戶原本輸入Web頁面的數據發生了何種改變。
在本發明的上述實施例中,採用本地的密鑰對摘要進行加密,所述密鑰不被上傳至伺服器,使得不存在因上傳伺服器而導致摘要洩露或摘要被篡改的問題。
下面以採用上述在Web摘要(A)中設置ID的方案為例,通過一個完整的實例詳細介紹對數據進行驗證的方法。假設,參考圖4,用戶針對Web頁面的域1、2、3、4分別輸入了:姓名、年齡、電話號碼、性別,所輸入的數據內容為「張三」、「23」、「8888888」、「男」。根據用戶所輸入的內容,提取Web摘要A,「a(d1s1p1)b(d2s1p1)c(d3s2p1)d(d3s2p1)e(s1p1)f(s2p1)g(p1)」。將用戶輸入的數據及相應的標識「張三d1s1p1 23d2s1p1 8888888d3s2p1男d4s2p1」上傳至伺服器。當需要再次訪問數據時,根據需要僅下載「張三d1s1p1」、「8888888d3s2p1」、和「男d4s2p1」。對下載的數據提取摘要,例如對「張三」提取摘要獲得「a』」,相應地對「8888888」和「男」提取摘要「c』」和「d』」,作為摘要B(參考圖2,a』、c』、d』是摘要B的一部分)。讀取Web摘要A的內容,將Web摘要A中與標識「d1s1p1」、「d3s2p1」、「d3s2p1」相對應的摘要欄位「a」、「b」、「c」與通過對下載數據進行摘要提取而獲得的「a』」、「b』」、「c』」進行直接比對以及交叉對比,從而驗證姓名數據是否發生了改變。
根據本發明的上述方法,對於採用設置ID而生成Web摘要A的方案,尤其適用於針對用戶輸入的數據需要在不同結構的Web頁面之間進行傳遞和展示的情況。這是由於再次訪問數據的Web頁面可能僅需下載部分數據,其展示數據的方式也可能不同於用戶首次輸入數據所採用的Web頁面。該方案使得需要訪問數據的Web頁面可以從伺服器處僅獲取需要展示的那一部分數據,並根據需要將獲取的數據展示在相應的位置上。
除上述方法之外,本發明還提供了一種檢驗Web頁面所上傳數據的變化的裝置。如圖5所示,根據本發明的裝置,包括:層次加密上傳模塊11,和驗證模塊12。
所述層次加密上傳模塊11,用於針對Web頁面的結構分層次地提取摘要(A),以及將用戶輸入Web頁面的數據上傳至伺服器。所述層次加密上傳模塊11還被用於採用本地密鑰對所述摘要(A)進行加密,以將加密後的密文上傳至伺服器。如前文所述,在本發明中可以採用上述方法,按照域、區、Web頁面這幾個層次逐步地來生成摘要。例如,可以針對每個域將用戶輸入的數據作為摘要算法的輸入,生成能夠代表該域中所輸入數據特點的摘要s0;將一個區中的全部多個域的摘要作為摘要算法的輸入,生成代表該區的摘要s1;將一個Web頁面中的全部多個區的摘要作為摘要算法的輸入,生成代表該Web頁面的摘要s2;最後,將s0、s1和s2拼接成一個字符串,以進行加密和上傳。
所述層次加密上傳模塊11可以包括以下幾個子模塊。
提取摘要模塊111,用於根據用戶填寫的數據處於Web頁面上的位置,生成針對域的摘要s0,針對區的摘要s1以及針對頁面的摘要s2。在本發明中,所述提取摘要模塊111還可以將所述摘要s0、s1和s2拼接成一個字符串A,例如A=s0s1s2。應當理解,根據需要,所述提取摘要模塊111可以僅針對域提取摘要,或僅針對域和區提取摘要,或僅針對域和頁面提取摘要,或僅針對區和頁面提取摘要,以及可以僅針對用戶填寫的數據中的部分來提取摘要。
摘要加密模塊112,用於採用本地密鑰對由提取摘要模塊111生成的摘要進行加密,以生成密文。所述本地密鑰可以是由用戶輸入的密碼,也可以是由本地應用生成的密碼,本地密鑰將不會被上傳至伺服器。進行加密的方式可以是任意現有的對稱加密算法,只有採用密鑰才可以將經過加密的密文還原為摘要。通過加密,可以保證所生成的摘要的安全性。
如前文所述,在本發明中既可以將摘要與用戶數據一起上傳至伺服器,也可以不將所述摘要上傳至伺服器,而僅將其保存在本地。對於將摘要保存在本地的情況,也可以不設置摘要加密模塊112。
上傳模塊113,用於將用戶填寫的數據上傳至伺服器。所述上傳模塊113還可以用於將由摘要加密模塊112生成的密文上傳至伺服器。應當理解,優選地將所述數據與所述密文分開上傳或分開保存至不同的伺服器,例如,將所述密文上傳至管理員無修改權限的伺服器中,以保證密文儘可能地不發生改變。
除上述層次加密上傳模塊11之外,本發明的裝置還包括驗證模塊12。
所述驗證模塊12,用於在用戶再次訪問上傳至伺服器的數據時,對從伺服器取回的數據提取摘要(B),並將與上傳至伺服器時的數據對應的摘要(A)進行比對,以檢驗所取回的數據發生的變化。所述驗證模塊12提取的摘要B優選地採用與所述摘要A相同的摘要提取規則,應當理解在從伺服器取回的數據為用戶上傳數據的子集時,可以僅採用與所下載數據部分相對應的摘要提取規則。並且,在所述層次加密上傳模塊11將對摘要A加密後的密文上傳至伺服器的情況下,所述驗證模塊12還用於對從伺服器取回的密文進行解密,以獲得摘要(A』),並將摘要B與摘要A』進行比對,以檢驗所取回的數據發生的變化。
所述驗證模塊12可以包括以下幾個子模塊。
下載模塊121,用於從伺服器取回用戶填寫進Web頁面的數據;以及,在對摘要A進行加密的密文上傳至伺服器的情況下,用於從伺服器取回所述密文。
摘要解密模塊122,用於在摘要經過加密的情況下,採用本地密鑰對密文進行解密,以獲得摘要A』(在沒有將密文上傳至伺服器的情況下,解密獲得摘要A)。
摘要重提取模塊123,用於根據與所述提取摘要模塊111中相同的提取摘要的規則,對由下載模塊121取回的用戶填寫進Web頁面的數據提取摘要B。
檢驗一致性模塊124,用於將所述摘要A』(在沒有將摘要上傳至至伺服器的情況下,將所述摘要A)與由所述摘要重提取模塊123生成的所述摘要B進行比對,並根據所述摘要A』(或A)和所述摘要B的一致性來確定上傳的數據發生了何種變化。當A』≠B時,可以分層次地對A』和B進行比對,並根據不一致的欄位所代表的在Web頁面中的位置,來判斷上傳的數據發生了何種變化。
假設,A』=s0s1s2,其中s0、s1和s2分別表示Web頁面的域摘要、區摘要和頁面摘要;B=s0’s1’s2』,其中s0』、s1』和s2』分別表示Web頁面的域摘要、區摘要和頁面摘要。圖2示出了A』和B的字符串示意圖,參考前一實施例中的所述方法,可以對A』和B中的頁面1的摘要、區1、2的摘要、域1、2、3、4的摘要進行直接比對以及交叉比對,從而確定上傳的數據發生了何種變化。
通過這樣的比對,可以利用所述檢驗一致性模塊124定位發生異常數據所處的位置,以及檢測數據的順序是否發生了錯亂。
通過上述實施例可以看出,本發明通過根據網頁的結構,分層次地對用戶輸入網頁的數據提取摘要,使得在通過伺服器再次訪問用戶所輸入數據時,可以利用所提取的摘要確定網頁中的哪一部分數據發生了改變,以及數據的位置是否發生了更改,同時,即使需要用戶數據在不同web頁面上進行傳遞和展示或是只需要部分特定用戶數據的情況下,本發明依舊有效。由此,為用戶數據的一致性與完整性驗證提供了支持,使得更容易發現黑客惡意篡改的痕跡,以及由管理員誤操作導致的用戶數據改變。並且,本發明還對摘要部分進行本地加密,來提高摘要的安全性。根據本發明的方案,即便是在用戶輸入大量數據的情況下,也可以迅速地向用戶報告數據發生了何種改變。
最後所應說明的是,以上實施例僅用以說明本發明的技術方案而非限制,例如本發明並不限制向所述Web頁面輸入數據的方式,除用戶手動輸入之外,還可以採用諸如自動讀取數據的方式進行數據的輸入。儘管上文參照實施例對本發明進行了詳細說明,本領域的普通技術人員應當理解,對本發明的技術方案進行修改或者等同替換,都不脫離本發明技術方案的精神和範圍,其均應涵蓋在本發明的權利要求範圍當中。