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
載地址HTMLTestRunner.py文件:
http://tungwaiyip.info/software/HTMLTestRunner.html
下載的適合python2,如果python3要修改一些內容
首先吧HTMLTestRunner文件添加到環境變量里,可以直接放到python的Lib目錄下
HTMLTestRunner是python標準庫unittest單元測試框架的一個擴展,用于生成HTML測試報告
#coding:utf-8
import unittest, HTMLTestRunner
class Testcase(unittest.TestCase): # 測試用例類
# 具體的測試用例,一定要以test開頭
def test1(self):
self.assertEqual(1, 1)
def test2(self):
self.assertEqual(2, 2)
if __name__ == "__main__":
# 構造測試集
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(Testcase)) # 執行該測試類所有用例
# 定義報告的存放路徑,以二進制寫的形式打開文件
f = open('test.html', 'wb')
# 定義測試報告,stream:報告存放路徑,title:報告標題,description:描述
runner = HTMLTestRunner.HTMLTestRunner(stream=f, title=u'測試用例標題', description=u'描述')
runner.run(suite) # 運行測試用例
f.close() # 關閉文件
返回結果(測試報告詳情):
--stream :存放報告寫入文件的存入區域
--title :測試報告的主題
--description :測試報告的描述
為了生成帶有中文描述的測試用例類和測試用例
在用例類和用例方法下,通過’’’ ‘’’或””” “””來添加備注
#coding:utf-8
import unittest, HTMLTestRunner
class Testcase(unittest.TestCase): # 測試用例類
u'''類名后加備注'''
def test1(self):
u'''用例后面加備注1'''
self.assertEqual(1, 1)
def test2(self):
u'''用例后面加備注2'''
self.assertEqual(2, 2)
if __name__ == "__main__":
# 構造測試集
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(Testcase))
# 定義報告的存放路徑,以二進制寫的形式打開文件
f = open('test.html', 'wb')
# 定義測試報告,stream:報告存放路徑,title:報告標題,description:描述
runner = HTMLTestRunner.HTMLTestRunner(stream=f, title=u'測試用例標題', description=u'描述')
runner.run(suite) # 運行測試用例
f.close() # 關閉文件
返回結果:
#coding:utf-8
import unittest, HTMLTestRunner, time
from unittest.loader import makeSuite
class Testcase(unittest.TestCase): # 測試用例類
# 具體的測試用例,一定要以test開頭
def test1(self):
self.assertEqual(1, 1)
def test2(self):
self.assertEqual(2, 2)
if __name__ == "__main__":
# 構造測試集
suite = unittest.TestSuite()
suite.addTest(makeSuite(Testcase)) # 執行該測試類所有用例
# 定義報告的存放路徑,以二進制寫的形式打開文件
now = time.strftime("%y-%m-%d %H_%M_%S")
f = open('./' + now + 'test.html', 'wb')
# 定義測試報告,stream:報告存放路徑,title:報告標題,description:描述
runner = HTMLTestRunner.HTMLTestRunner(stream=f, title=u'測試用例標題', description=u'描述')
runner.run(suite) # 運行測試用例
f.close() # 關閉文件
返回結果:
將紅框里的內容注釋掉改成uo = o.decode('utf-8')
DF文檔的打印在很多應用場景中都會被使用到,最為常見的就是實驗室信息管理的應用場景,期間涉及到大量的報告呈現及打印的需求。
實驗室信息管理系統(Laboratory Information Management System 英文縮寫LIMS)是將以數據庫為核心的信息化技術與實驗室管理需求相結合的信息化管理工具。以ISO/IEC17025:2017 CNAS-CL01《檢測和校準實驗室能力的通用要求》(國標為GB/T 27025:2008)規范為基礎,結合網絡化技術,將實驗室的業務流程和一切資源以及行政管理等以合理方式進行管理。
通過LIMS系統,配合分析數據的自動采集和分析,大大提高了實驗室的檢測效率;降低了實驗室運行成本并且體現了快速溯源和痕跡,使傳統實驗室手工作業中存在的各種弊端得以順利解決。目前實驗室信息管理系統在西方發達國家的應用相對比較成熟,我們國家經過多年發展,很多實驗室也開始逐漸認識到信息化在管理中的作用,紛紛開始引入LIMS。
在LIMS系統構建的過程中,實驗模板設計、實驗數據填報、導出完整的PDF實驗報告并且實現檢測過程無紙化、系統化,檢測報告電子化是LIMS系統的主要需求。那么如何快速又高質量的輸出PDF實驗報告呢?
借助SpreadJS表格技術及GcExcel僅僅需要三步就可以完成整個功能的開發:
用SpreadJS完成實現模板設計和實驗數據填報
利用SpreadJS的在線表格編輯器,實驗人員就可以通過類Excel的操作完成實驗報告的設計。
通過以下代碼就可以將SpreadJS快速集成到現有的系統中:
創建一個JavaScript應用程序:
注意 SpreadJS是無依賴的,僅僅需要以下文件: gc.spread.sheets.xx.x.x.css, gc.spread.sheets.all.xx.x.x.min.js即可.
<!DOCTYPE html><html lang="zh"><head>
<meta charset="utf-8" />
<script src="gc.spread.sheets.all.xx.x.x.min.js"><link rel="stylesheet" href="gc.spread.sheets.xx.x.x.css"type="text/css"/></head>
<body></body></html>
添加SpreadJS容器元素 - 在頁面的body元素中添加一個DOM元素作為它的容器。
<div id="ss"></div>
初始化SpreadJS JavaScript控件。 - SpreadJS控件通過使用new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 1 })來進行初始化。
window.onload = function () {// Initialize a workbookvar workbook = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 1 });// get workbook object// var workbook = GC.Spread.Sheets.findControl(document.getElementById('ss'));
};
在完成嵌入之后,通過SpreadJS的數據綁定的功能,某些默認數據可以從數據庫加載,顯示到實驗模板中,實驗人員填報的實驗數據也可以通過數據綁定輕松獲取到
用SpreadJS完成導出PDF(打印)的配置
使用SpreadJS的在線表格編輯器可以完成導出PDF的配置,可配置導出區域,重復區域,頁眉,頁腳,水印等,對導出PDF報告進行自定義。
用GCExcel將實驗報告導出
在SpreadJS中完成模板設計,實驗數據填報,以及各種打印配置后,可以將整個實驗模板文件導出為一個json,發給后端,后端就可以用GCExcel加載,GCExcel可以完美兼容SpreadJS的特性,在SpreadJS中對模板的配置,以及對導出的PDF的配置,在GCExcel中都完美兼容,當然也可以在GCExcel完成對模板的配置以及PDF導出的配置。
Java
Workbook workbook = new Workbook();
//打開SpreadJS導出的模板
workbook.open("template.ssjson");
// 導出PDF配置
PdfSaveOptions pdfSaveOptions = new PdfSaveOptions();
// 配置支持換行縮小
pdfSaveOptions.getShrinkToFitSettings().setCanShrinkToFitWrappedText(true);
// 導出PDF
workbook.save("ExportPdf.pdf");
至此,就完成PDF文檔的打印。
活中我們經常會碰到空間領紅包“中毒”自動發不良信息的現象,或者是不知不覺的被人盜取了信息的情況。通常這種情況都是XSS漏洞導致的,我們今天就來講解一下關于XSS漏洞的原理。
反射型
存儲型
Dom-based型
這里面反射型跟持久型都是很常見的,也是用的最廣泛的一種攻擊方式。
它的主要利用原理是:
給受害者發送帶有惡意代碼或腳本的鏈接,如果你點擊了鏈接,只要是被HTML所解析并且執行了,那無論你是否快速關閉了點開的頁面,都白瞎了。
Dom這種XSS漏洞是基于文檔對象模型的一種漏洞,它的特點是通過url傳入參數去控制觸發的。
下面我們主要來說一下反射型跟存儲型XSS的原理,并附上代碼。
我們平時常見XSS地方很多都是搜索框(一般網站上都會有搜索文章什么的),我們可以在這種搜索框里面輸入:
<script>alert('XSS')</script>
來驗證XSS的漏洞存在與否,如果存在會彈出一個編輯框“XSS”,下面我們自己構建一個這樣的搜索框:
先新搭建好PHP環境,在站點新建一個xss.php文件,輸入以下的代碼。
代碼的意思很簡單:
然后在瀏覽器上訪問的效果應該是這樣的:
這個時候我們就可以輸入常規的信息去搜索,輸入“im liuse”顯示效果如下:
現在我們改變策略,輸入我們上面說的xss測試代碼<script>alert('XSS')</script>然后執行,你會看到下圖的效果:
事實證明,沒有進行過濾,如果我們把這個地方的<script>alert('XSS')</script>改成其它的代碼,如:
<script>alert(document.cookie)</script>
就可以獲取用戶的cookie(cookie記錄了用戶的登錄信息),拿到cookie有什么用呢?
舉個例子,比如說拿到你的QQ空間的cookie就可以不需要用戶名密碼登錄你的空間,我們經常見到空間好友自動轉發一些亂七八糟的東西的圖片文字的,基本都是通過xss漏洞搞的。
說完反射型XSS我們再來說說存儲型XSS。
相對于反射型XSS,存儲型XSS的檔次確實高了不少,不過利用難度也相對提高了。
什么是存儲型XSS呢?沒錯就跟它的名字一樣,是可以儲存起惡意代碼的方式。這種漏洞利用多出現在論壇評論,后臺上傳這些地方,可以是圖片也可以是文字。相對于反射型XSS不同的是,存儲型XSS可以保存在服務器端(存到數據庫)下面我們用代碼舉例:
我們在上面的xss.php文件的基礎上修改一下:
同樣的代碼還是很容易理解:
下面,我們來實驗一下。
在搜索框同樣輸入我們的XSS代碼:
你會發現貌似前臺沒有顯示,但去mysql數據庫看已經存儲到數據庫了,以后任何人去訪問某個調用這個數據庫的頁面都會受影響!
以上就是簡單的演示說明,下面我們講講防范過濾。
重點對象:
<>(尖括號)、”(引號)、 ‘(單引號)、%(百分比符號)、;(分號)、()(括號)、&(& 符號)、+(加號)
過濾函數:
(1)htmlspecialchars() 函數,用于轉義處理在頁面上顯示的文本。
(2)htmlentities() 函數,用于轉義處理在頁面上顯示的文本。
(3)strip_tags() 函數,過濾掉輸入、輸出里面的惡意標簽。
(4)header() 函數,使用header("Content-type:application/json"); 用于控制 json 數據的頭部,不用于瀏覽。
(5)urlencode() 函數,用于輸出處理字符型參數帶入頁面鏈接中。
(6)intval() 函數用于處理數值型參數輸出頁面中。
好,今天XSS就先介紹到這里了,希望各位一定要認識到網安的重要性!
*請認真填寫需求信息,我們會在24小時內與您取得聯系。