Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 91麻豆精品国产91久久久久久,久久国产精品一国产精品,国产精品福利视频萌白酱

          整合營(yíng)銷(xiāo)服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢(xún)熱線(xiàn):

          HTML中幾個(gè)容易混淆的屬性,你知道幾個(gè)?


          在前端開(kāi)發(fā)編寫(xiě)html文件的時(shí)候,我們可能會(huì)很熟練的寫(xiě)出常見(jiàn)的html元素,但是如果問(wèn)到某些元素的差別時(shí),大家不一定能說(shuō)的出來(lái),今天就給大家總結(jié)一下那些很常見(jiàn)但容易混淆的屬性。

          html與css

          css引入

          css樣式文件引入的方式有兩種,分別是link標(biāo)簽和@import。

          • link語(yǔ)法結(jié)構(gòu)

          link語(yǔ)法結(jié)構(gòu)如下,注意rel='stylesheet'屬性要加上。

          link語(yǔ)法結(jié)構(gòu)

          • @import語(yǔ)法結(jié)構(gòu)

          當(dāng)@import用在html中時(shí),需要配合style標(biāo)簽

          @import在html中

          當(dāng)@import用在css文件中,直接使用@import url()即可

          @import在css中

          link與@import的區(qū)別與選擇

          既然link與@import都可以用來(lái)引入css,那么它們的區(qū)別是什么呢?我們又該如何選擇呢?

          • link是XHTML標(biāo)簽的一種,除了可以加載css外,還可以定義其他rel屬性,而@import只能用來(lái)加載css。

          • link標(biāo)簽在加載css時(shí),與頁(yè)面一同加載,而@import需要等到網(wǎng)頁(yè)完全加載以后才進(jìn)行加載。

          • link是XHTML標(biāo)簽,不存在兼容問(wèn)題,而@import是在CSS2.1中提出的,對(duì)于低版本的瀏覽器不支持。

          • link標(biāo)簽可以通過(guò)Javascript代碼去控制其屬性,而@import不可以。

          javascript控制link

          • @import支持在css文件中再次引入其他css文件,方便對(duì)多個(gè)css文件的管理。

          因?yàn)锧import引入的文件需要在網(wǎng)頁(yè)完全加載后再加載,如果在網(wǎng)絡(luò)速度較慢的情況下,會(huì)出現(xiàn)頁(yè)面閃現(xiàn),因此建議使用link標(biāo)簽代替@import。

          readonly與disabled屬性

          html元素的readonly與disabled屬性一般都是用于無(wú)法改變表單的內(nèi)容,但是兩者也是有區(qū)別的。

          • readonly屬性只針對(duì)input(text,password)和textarea元素,而disabled適用于所有表單元素,包括select,radio,checkbox,button等。

          • 在表單元素使用了disabled后,該元素的的值不會(huì)隨著form的action請(qǐng)求傳遞到服務(wù)器端,而使用readonly的元素值可以傳遞到服務(wù)器端。

          以下是一些關(guān)于兩者的使用建議。

          • 在表單中為用戶(hù)預(yù)填的唯一標(biāo)識(shí)碼,不允許用戶(hù)改動(dòng),而且需要傳遞到后臺(tái)的使用readonly屬性。

          • 用戶(hù)提交完表單元素后,等待服務(wù)器端的驗(yàn)證,這個(gè)過(guò)程應(yīng)該將元素設(shè)為disabled,button和submit也應(yīng)該設(shè)為disabled,以防止重復(fù)提交。

          img元素的title和alt屬性

          • title屬性

          img標(biāo)簽的title屬性是用來(lái)提供一些建議性的信息,在鼠標(biāo)停留在上方時(shí)會(huì)顯示,它對(duì)于圖片來(lái)說(shuō)只是一種注釋性的信息,重要性偏低。

          • alt屬性

          alt屬性是為不能顯示圖像時(shí),用來(lái)指定替換文字,需要注意的是替換文字是用來(lái)代替文字的,而不是用來(lái)注釋文字的。

          • 屬性的使用

          在做圖片為主的網(wǎng)頁(yè)時(shí),考慮到網(wǎng)頁(yè)的SEO,應(yīng)當(dāng)設(shè)置圖片的alt屬性為圖片的真實(shí)內(nèi)容,而給title設(shè)置一些建議性的內(nèi)容。

          總結(jié)

          今天這篇文章主要將了幾個(gè)html中容易混淆的屬性,你有收獲嗎?

          不管是C#還是Java,都是可以通過(guò)反編譯工具,進(jìn)行反編譯后查看源碼,這個(gè)源碼雖然不是真正意義的源碼,但和真正源碼的相差不是很大.如果是單純的Web還好一些.因?yàn)橹恍枰渴鸬椒?wù)器上,也很少人能看到部署文件.所以相對(duì)要好一些.如果是C#做客戶(hù)端的話(huà),是需要安裝到客戶(hù)機(jī)上的.所以還是需要對(duì)程序做一下處理,對(duì)程序代碼進(jìn)行代碼混淆.

          這里主要使用Obfuscator這個(gè)工具,Obfuscator是源碼開(kāi)源.且也是國(guó)人Lex Li(已經(jīng)出國(guó))所寫(xiě).

          在VS中如何使用Obfuscator

          1.在Nuget中,搜索Obfuscator,并進(jìn)行安裝

          在Nuget瀏覽器中,搜索Obfuscator

          2.創(chuàng)建obfuscar.xml,并設(shè)置該文件為較新復(fù)制

          在屬性中,設(shè)置文件較新復(fù)制

          3. 在obfuscar.xml中指定配置信息

          <?xml version="1.0" encoding="utf-8" ?>
          <Obfuscator>
            <!--輸入路徑-->
            <Var name="InPath" value="." />
            <!--輸出路徑:加密混淆過(guò)的路徑-->
            <Var name="OutPath" value=".\Obfuscator_Output" />
            <!--混淆代碼的參數(shù)-->
            <Var name="ReuseNames" value="false" />
            <Var name="HideStrings" value="false" />
            <Var name="KeepPublicApi" value="false" />
            <Var name="HidePrivateApi" value="true" />
            <!--要混淆的模塊-->
            <Module file="$(InPath)\ConsoleApp2.exe" />
          </Obfuscator>
          參數(shù)信息,可以看這里: https://docs.obfuscar.com/getting-started/configuration.html

          4.在程序生成之后調(diào)用Obfuscar.通過(guò)VS的生成事件實(shí)現(xiàn).

          在VS中生成后事件,調(diào)用Obfusacr 并加載obfuscar.xml

          5.在Obfuscator_Output目錄,通過(guò)反編譯工具JustDecompilte查看混淆過(guò)的程序.

          使用反編譯工具JustDecompilte查看混淆過(guò)的代碼

          在命令行中使用Obfuscator

          Obfuscator可以不在VS中直接使用,Obfuscator是一個(gè)單純的代碼混淆工具. 上邊說(shuō)過(guò)Obfuscator代碼是開(kāi)源的.

          在GitHub項(xiàng)目地址: git@github.com:obfuscar/obfuscar.git
          在Gitee項(xiàng)目地址: https://gitee.com/junweihuang_admin/obfuscar.git

          因?yàn)镚itee速度要快于GitHub,如果Gitee上有的話(huà),還是優(yōu)先使用Gitee. 如果Gitee上面沒(méi)有的話(huà),就得去Github上.打開(kāi)Obfuscar.sln解決方案.進(jìn)行編譯.發(fā)現(xiàn)是無(wú)法編譯成功的.發(fā)現(xiàn)Obfuscator依賴(lài)Baml項(xiàng)目中.

          在Baml項(xiàng)目中,發(fā)現(xiàn)這幾個(gè)不存在的.

          發(fā)現(xiàn)Baml項(xiàng)目中,有4個(gè)文件不存在

          在Obfuscator項(xiàng)目中的Obfuscator.cs發(fā)現(xiàn)ILSpy.BamlDecompiler.Baml命名:

          發(fā)現(xiàn)了ILSpy.BamlDecompiler.Baml這個(gè)命名空間

          便懷疑是不是缺的這幾個(gè)文件在IlSpy中呀!于是便把IlSpy源碼下載到本地,最終找到了這幾個(gè)文件.將這幾個(gè)文件拷貝到Baml項(xiàng)目中,嘗試編譯,果真是編譯成功了.

          生成后的目錄:

          Obfuscar代碼混淆工具,只需要將要混淆的程序放入Input路徑下,在obfuscar.xml修改指定,雙擊run.bat就可以了

          Obfuscar.Console.exe使用:

          1. 將要混淆的程序集放入Input目錄中
          2. 修改obfuscar.xml指定要混淆的程序集(exe或dll)
          3. 雙擊run.bat

          止核心代碼泄露以及代碼合并

          每日辛辛苦苦碼的代碼被輕松破解

          機(jī)密核心模塊被盜用?

          數(shù)據(jù)庫(kù)地址和語(yǔ)句暴露?

          …… 這些都是由代碼未混淆加密,從而進(jìn)行泄露的

          我們目前DLL文件存在的風(fēng)險(xiǎn):

          一、直接引用

          二、反編譯

          三、反射

          如果DLL一點(diǎn)措施都不做的話(huà),上面任意一種都可以達(dá)到破解目的的。

          如果通過(guò)反編譯軟件:ILSpy、Reflector,輕而易舉,那相當(dāng)于直接copy代碼了。

          那么要怎么樣才能保護(hù)我們的代碼呢?

          今天帶大家進(jìn)入代碼的另一個(gè)世界,代碼混淆與DLL融合


          目錄:

          01 混淆原理

          反編譯軟件就是能讓你看到代碼,進(jìn)行Copy使用,那怎么讓它不能看,不能調(diào)呢。這個(gè)時(shí)候就需要說(shuō)一說(shuō)模糊處理。

          模糊處理:意在引起混淆,實(shí)質(zhì)上是將在代碼中找到的標(biāo)識(shí)符重命名為不可讀的內(nèi)容。它們可能使用哈希技術(shù),或者對(duì)字符集進(jìn)行算術(shù)偏移,將字符變?yōu)椴豢勺x字符或不可輸出字符。這些技術(shù)雖然表面上很有效,但是它們都是可逆的,因此很難起到保護(hù)作用。

          編譯原理

          模糊處理這一過(guò)程應(yīng)用于已編譯的 MSIL 代碼而不是應(yīng)用于源代碼(源代碼不會(huì)不會(huì)被讀取和更改), 經(jīng)過(guò)模糊處理的在功能上等同于你的源代碼,它在公共語(yǔ)言運(yùn)行庫(kù) (CLR) 上執(zhí)行并產(chǎn)生與原始 MSIL 代碼相同的結(jié)果。(但是,它是不可逆的,即使通過(guò)反編譯和原始的源代碼相比,它在語(yǔ)義上也將有重大不同。)

          Dotfuscator的定位

          代碼安全已經(jīng)演變出許多加密、加殼的軟件,如:PreEmptive ,它是得到Micorsoft和Sun公司的認(rèn)可的以Java和.Net混淆器出名的公司,其中比較出名的軟件: PreEmptive Protection Dotfuscator

          Dotfuscator工具,它使用很多其他頗具獨(dú)創(chuàng)性的 “ 引起混淆 ”的算法,使得代碼幾乎不能被反編譯(還是存在一定機(jī)率可逆,但代價(jià)太大,得不償失)。

          Dotfuscator工具主要使用模糊處理這種技術(shù)能夠?qū)Τ绦蚣械姆?hào)、變量、字符串等進(jìn)行無(wú)跡可尋的重命名,并提供很多其他手段,從而阻止進(jìn)行反編譯。

          Dotfuscator安裝

          VS自帶混淆軟件:Dotfuscator,在VS2019前版本都會(huì)自動(dòng)安裝,2019版本就需要手動(dòng)安裝了,可搜索: Dotfuscator,預(yù)計(jì)安裝10分鐘,安裝完成后,需要進(jìn)行郵箱注冊(cè)才可以使用,但非正式版限制太多。

          介紹的是一款破解版:DotfuscatorPro 4.9

          安裝后使用時(shí),它依賴(lài).Net Framework 2.0和3.5,會(huì)進(jìn)行第一次更新,需確認(rèn)windows的自動(dòng)更新服務(wù)是打開(kāi)的

          DotfuscatorPro 4.9

          02 如何對(duì)代碼加密

          1、創(chuàng)建新的工程文件。INPUT 選項(xiàng)里 選擇你需要混淆加密的 DLL、EXE文件:
          
          2、進(jìn)入Settings選項(xiàng) –> 把 Disable String Encryption 設(shè)為 NO,即啟用字符串加密;
                檢查 Disable Control flow、Dsiable Renaming 也為 NO,即保證控制流和混淆功能打開(kāi),其他默認(rèn)。
                
          3、進(jìn)入Rename-> Options選項(xiàng) 勾選“use enhanced overload induction”(使用增強(qiáng)模式),
                注意:不要勾選下方的“ Do not suppress on serializable types”,即序列化類(lèi)型的變量不加密,否則編譯后可能異常;
                “Renaming Scheme” 選擇“Unprintable”(不可打印字符,即亂碼),也可以選擇其他如小寫(xiě)字母、大寫(xiě)字符、數(shù)字的方式
                
          4、進(jìn)入String Encryption 選項(xiàng) include里勾選需要字符串加密的工程文件EXE、DLL等
          
          5、轉(zhuǎn)入Output目錄,點(diǎn)擊Build,查看輸出結(jié)果為  Build Finshed 即為成功。
          

          操作步驟

          提醒:編譯過(guò)程中可能提示會(huì)代碼框架為4.5及以上,需要手動(dòng)配置編譯環(huán)境的路徑,在Settings ->Porjcet properties 設(shè)置編譯環(huán)境地址,如下圖:

          反編譯前后對(duì)比

          Dotfuscator 可對(duì)代碼中的變量值進(jìn)行模糊處理,大大增加閱讀難度,反編譯出來(lái)的代碼也如混淆后的代碼

          混淆前后對(duì)比

          甚至連exe文件都能執(zhí)行模糊處理

          混淆前后對(duì)比

          03 代碼融合

          有時(shí)系統(tǒng)中我們關(guān)聯(lián)了太多第三方DLL,以及自身建了多個(gè)類(lèi)庫(kù),等到系統(tǒng)發(fā)布時(shí)發(fā)現(xiàn)DLL文件有幾十個(gè),實(shí)在太夸張。萬(wàn)一丟掉一個(gè)未復(fù)制, 整個(gè)程序都無(wú)法運(yùn)行。

          微軟推出一款I(lǐng)LMerge打包合并工具,它可以將程序集合并到一個(gè)目標(biāo)程序集中。輸入程序集列表中的第一個(gè)程序集是主程序集。當(dāng)主程序集是可執(zhí)行文件時(shí),目標(biāo)程序集將創(chuàng)建為具有與主程序集相同的入口點(diǎn)的可執(zhí)行文件。此外,如果主程序集具有強(qiáng)名稱(chēng),并且提供了.snk文件,則使用指定的鍵重新簽名目標(biāo)程序集,以使其具有強(qiáng)名稱(chēng)。

          它是命令行形式運(yùn)行:

          1、打開(kāi)cmd,轉(zhuǎn)至安裝目錄(最好是以管理員權(quán)限運(yùn)行)
          2、ILMerge.exe /targetplatform:v4,“.NETFramework安裝目錄” /target:winexe /union /xmldocs /copyattrs /allowMultiple /internalize /closed /ndebug /out:“新文件” /log “dll1” “dll2” /log:“日志目錄”
          
          參數(shù)說(shuō)明:
          /targetplatform 輸出文件的.net運(yùn)行版本
          /target 生成的文件,winexe應(yīng)用程序,library DLL文件
          /closed 排除引用文件相互引用
          /log 需要合并的DLL或EXE,需要把所有的合并的EXE或DLL囊括進(jìn)來(lái)
          /ndebug 為非調(diào)試版本,即發(fā)布版本,如果去掉,將會(huì)生成.pdb拓展名的調(diào)試文件
          /log 日志,可以不加

          提醒:要集成的程序最好是release過(guò)的,不然會(huì)出一些莫名其妙的問(wèn)題。

          圖形界面

          我們找到一款圖形化界面,可以輕松合并

          圖形工具

          合并后的反編譯

          圖形界面使用: https://jingyan.baidu.com/article/59a015e3204d87f794886529.html

          那看到這里,拋出2個(gè)問(wèn)題,供大家討論:

          1、打包工具還能做什么呢?

          2、混淆加密后真的安全?


          上一篇:代碼安全之文件上傳漏洞 下一篇:代碼安全之漏洞掃描


          主站蜘蛛池模板: 国产精品无码亚洲一区二区三区| www一区二区三区| 精品国产免费一区二区| 国产成人精品一区二区A片带套| 亚洲国产精品一区二区三区在线观看 | 国产精品免费综合一区视频| 精品国产一区二区三区久久狼| 免费一区二区视频| 欧洲精品码一区二区三区免费看| 亚洲国产一区二区三区| 亚洲伦理一区二区| 国产精品一区二区毛卡片| 国精产品999一区二区三区有限| 精品91一区二区三区| 国产在线精品一区二区在线观看| 麻豆国产一区二区在线观看| 日韩一区在线视频| 久久一区二区三区精品| 亚洲午夜精品一区二区麻豆| 丝袜美腿高跟呻吟高潮一区| 国产精品毛片一区二区三区| 亚洲av日韩综合一区二区三区 | 农村人乱弄一区二区| 精品一区精品二区制服| 高清无码一区二区在线观看吞精| 无码精品人妻一区二区三区人妻斩| 一区二区和激情视频| 中文字幕一区在线播放| 男插女高潮一区二区| 国产精品毛片一区二区 | 日韩三级一区二区三区| 日本在线一区二区| 精品女同一区二区三区在线| 久久精品动漫一区二区三区| 日美欧韩一区二去三区| 久久久一区二区三区| 人妻无码一区二区视频| 日韩精品无码一区二区中文字幕| 激情综合丝袜美女一区二区| 国产精品一区二区久久精品| 久久精品国产一区二区|