久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    解決跨站腳本注入,跨站偽造用戶請(qǐng)求,sql注入等http安全漏洞

     三十的狼 2019-08-30

    跨站腳本就是在url上帶上惡意的js關(guān)鍵字然后腳本注入了,跨站偽造用戶請(qǐng)求就是沒(méi)有經(jīng)過(guò)登陸,用超鏈接或者直接url上敲地址進(jìn)入系統(tǒng),類似于sql注入這些都是安全漏洞。


    • sql注入

    1、參數(shù)化查詢預(yù)處理,如java使用PreparedStatement()處理變量。
    2、轉(zhuǎn)義敏感字符及字符串(SQL的敏感字符包括“exec”,”xp_”,”sp_”,”declare”,”Union”,”cmd”,”+”,”//”,”..”,”;”,”‘”,”--”,”%”,”0x”,”><=!-*/()|”,和”空格”)。
    3、屏蔽出錯(cuò)信息:阻止攻擊者知道攻擊的結(jié)果。
    4、在服務(wù)端正式處理之前對(duì)提交數(shù)據(jù)的合法性(合法性檢查主要包括三項(xiàng):數(shù)據(jù)類型,數(shù)據(jù)長(zhǎng)度,敏感字符的校驗(yàn))進(jìn)行檢查等,在確認(rèn)客戶端的輸入合法之前,服務(wù)端拒絕進(jìn)行關(guān)鍵性的處理操作。


    • 跨站腳本

    一般性建議:轉(zhuǎn)義或過(guò)濾客戶端提交的危險(xiǎn)字符,客戶端提交方式包含GET、POST、COOKIE、User-Agent、Referer、Accept-Language等,其中危險(xiǎn)字符如下:
    建議轉(zhuǎn)義或過(guò)濾以下字符:
    [1] |(豎線符號(hào))
    [2] & (& 符號(hào))
    [3];(分號(hào))
    [4] $(美元符號(hào))
    [5] %(百分比符號(hào))
    [6] @(at 符號(hào))
    [7] '(單引號(hào))
    [8] ""(引號(hào))
    [9] \'(反斜杠轉(zhuǎn)義單引號(hào))
    [10] \""(反斜杠轉(zhuǎn)義引號(hào))
    [11] <>(尖括號(hào))
    [12] ()(括號(hào))
    [13] +(加號(hào))
    [14] CR(回車符,ASCII 0x0d)
    [15] LF(換行,ASCII 0x0a)
    [16] ,(逗號(hào))
    [17] \(反斜杠)
    [18]  (空格)
    [19] . (點(diǎn)號(hào))
    過(guò)濾以下關(guān)鍵字、標(biāo)簽:alert、img、script、document、document.title、document.write、eval、prompt、onclick、onerror、onmouseenter、onreadystatechange、confirm、javascript、String.fromCharCode、onload、DYNSRC、LOWSRC、behavior、vbscript、msgbox、mocha、livescript、。

    開(kāi)發(fā)語(yǔ)言的建議:
    [1]嚴(yán)格控制輸入:
        Asp:request
        Aspx:Request.QueryString、Form、Cookies、SeverVaiables等
        Php:$_GET、$_POST、$_COOKIE、$_SERVER、$_GlOBAL、$_REQUEST等
        Jsp:request.getParameter、request.getCookies 等
        客戶端提交的變量一般從以上函數(shù)獲得,嚴(yán)格限制提交的數(shù)據(jù)長(zhǎng)度、類型、字符集。

    [2]嚴(yán)格控制輸出:
        HtmlEncode:對(duì)一段指定的字符串應(yīng)用HTML編碼。
        UrlEncode:對(duì)一段指定的字符串URL編碼。
        XmlEncode:將在XML中使用的輸入字符串編碼。
        XmlAttributeEncode:將在XML屬性中使用的輸入字符串編碼 
        escape:函數(shù)可對(duì)字符串進(jìn)行編碼
        decodeURIComponent:返回統(tǒng)一資源標(biāo)識(shí)符的一個(gè)已編碼組件的非編碼形式。
        encodeURI:將文本字符串編碼為一個(gè)有效的統(tǒng)一資源標(biāo)識(shí)符 (URI)。" "get型xss:

    • 跨站請(qǐng)求偽造

    方案一、存在漏洞的頁(yè)面加驗(yàn)證碼或手機(jī)短信驗(yàn)證 
    方案二、檢測(cè)HTTP請(qǐng)求中的訪問(wèn)來(lái)源是否可信,對(duì)http頭中的referer進(jìn)行過(guò)濾,只允許本域站點(diǎn) 
    方案三、一次性令牌Token 
    添加一個(gè)參數(shù)Token,其值是隨機(jī)的。這樣攻擊者因?yàn)椴恢繲oken而無(wú)法構(gòu)造出合法的請(qǐng)求進(jìn)行攻擊。實(shí)現(xiàn)方法:首先服務(wù)器端要以某種策略生成隨機(jī)字符串,作為令牌(token),保存在 Session 里。然后在發(fā)出請(qǐng)求的頁(yè)面,把該令牌以隱藏域一類的形式,與其他信息一并發(fā)出。在接收請(qǐng)求的頁(yè)面,把接收到的信息中的令牌與 Session 中的令牌比較,只有一致的時(shí)候才處理請(qǐng)求,否則拒絕請(qǐng)求或者要求用戶重新登陸驗(yàn)證身份。 
    Token 使用原則: 
    Token要足夠隨機(jī)————只有這樣才算不可預(yù)測(cè) 
    Token是一次性的,即每次請(qǐng)求成功后要更新Token————這樣可以增加攻擊難度,增加預(yù)測(cè)難度 
    Token要注意保密性————敏感操作使用post,防止Token出現(xiàn)在URL中 
    方案四、臨時(shí)cookie:對(duì)會(huì)話進(jìn)行時(shí)效限制,將持久化的授權(quán)方法(例如cookie或者HTTP授權(quán))切換為短時(shí)或瞬時(shí)的授權(quán)方法 
    方案五、session標(biāo)記隨機(jī)生成;確認(rèn)已有的session標(biāo)記無(wú)法被二次使用 
    方案六、過(guò)濾用戶輸入,例如論壇、博客等,不允許發(fā)布含有站內(nèi)操作URL的鏈接(作用有限,因?yàn)榭梢酝ㄟ^(guò)qq、第三方網(wǎng)站進(jìn)行發(fā)布,圖片形式會(huì)自動(dòng)加載等) 
    方案七、根據(jù)不可預(yù)測(cè)性原則,我們可以對(duì)參數(shù)進(jìn)行加密從而防止CSRF攻擊。"
    已解密的登錄請(qǐng)求 對(duì)諸如用戶名、密碼和信用卡號(hào)之類的敏感輸入字段進(jìn)行加密傳遞
    會(huì)話定置 "COOKIE中的登陸前JSESSIONID與登陸后JESSIONID不能相同
    例如在登錄頁(yè)面上加上一段代碼:

    request.getSession().invalidate() ;         //清空session
    if (request.getCookies()!=null) {
       Cookie cookie = request.getCookies()[0];     // 獲取cookie
       cookie.setMaxAge(0);                    // 讓cookie過(guò)期
    }"	

    • 文件上傳

    [1]嚴(yán)格判斷上傳文件的類型,設(shè)置上傳文件白名單,只允許上傳指定類型的文件。
    [2]禁止在上傳目錄下執(zhí)行腳本。
    [3]上傳文件的目錄必須是http請(qǐng)求無(wú)法直接訪問(wèn)到的。如果需要訪問(wèn)的,必須上傳到其他(和web服務(wù)器不同的)域名下,并設(shè)置該目錄為不解析jsp等腳本語(yǔ)言的目錄。
    [4]上傳文件要保存的文件名和目錄名由系統(tǒng)根據(jù)時(shí)間生成,不允許用戶自定義。
    [5]圖片上傳,要通過(guò)處理(縮略圖、水印等),無(wú)異常后才能保存到服務(wù)器。"

    • jQuery跨站腳本

    "升級(jí)Jquery到1.7版本以上,或在js中修改如下行,quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/
    修改為:quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/"


    • 啟用了不安全的HTTP方法

    修改web.xml,增加如下配置

    <login-config>
           <!-- Authorization setting for SSL -->
           <auth-method>CLIENT-CERT</auth-method>
           <realm-name>Client Cert Users-only Area</realm-name>
      <auth-method>BASIC</auth-method>
       </login-config>
       <security-constraint>
           <!-- Authorization setting for SSL -->
      <web-resource-collection>
       <web-resource-name>SSL</web-resource-name>
       <url-pattern>/oa/login.jsp</url-pattern>
           </web-resource-collection>
           
           <user-data-constraint>
               <transport-guarantee>CONFIDENTIAL</transport-guarantee>
           </user-data-constraint>
       </security-constraint>
    
    
     <!-- 禁止不安全的http方法 -->
     <security-constraint>
      <web-resource-collection>
            <web-resource-name>fortune</web-resource-name>
            <url-pattern>/*</url-pattern>
            <http-method>PUT</http-method>
            <http-method>DELETE</http-method>
            <http-method>HEAD</http-method>
            <http-method>OPTIONS</http-method>
            <http-method>TRACE</http-method>
      </web-resource-collection>
      <auth-constraint></auth-constraint>
     </security-constraint> 


    • 登錄錯(cuò)誤消息憑證枚舉

    對(duì)每個(gè)錯(cuò)誤的登錄嘗試發(fā)出相同的錯(cuò)誤消息,不管是哪個(gè)字段發(fā)生錯(cuò)誤,特別是用戶名或密碼字段錯(cuò)誤。
    文件備份 "刪除備份文件。
    .arc/.bac/.backup/.bak/.bck/.copy/.old/.orig/.sav/.save/.saved/.swp/.temp/.test/.tmp/.txt"


    以下是我自己寫(xiě)的一份攔截器,里面可以實(shí)現(xiàn)對(duì)http請(qǐng)求的參數(shù)攔截,解決跨站腳本注入:

    package com.asiainfo.aiga.common.filter;
    
    import java.io.IOException;
    import java.util.Enumeration;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.lang3.StringUtils;
    
    public class XSSCheckFilter implements Filter
    {
    	private FilterConfig config;
    	private static String errorPath;//出錯(cuò)跳轉(zhuǎn)的目的地
    	private static String[] excludePaths;//不進(jìn)行攔截的url
    	private static String[] safeless = { "<script", //需要攔截的JS字符關(guān)鍵字
    	"</script", "<iframe", "</iframe", "<frame", "</frame", "set-cookie", "%3cscript", "%3c/script", "%3ciframe", "%3c/iframe", "%3cframe", "%3c/frame", "src=\"javascript:", "<body", "</body", "%3cbody", "%3c/body", "alert", "script", "document", "document.title", "document.write", "eval", "prompt", "onreadystatechange", "javascript", "msgbox"
    	//"<",
    	//">",
    	//"</",
    	//"/>",
    	//"%3c",
    	//"%3e",
    	//"%3c/",
    	//"/%3e"
    	};
    
    	public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException
    	{
    		Enumeration params = req.getParameterNames();
    		HttpServletRequest request = (HttpServletRequest) req;
    		HttpServletResponse response = (HttpServletResponse) resp;
    
    		boolean isSafe = true;
    		String requestUrl = request.getRequestURI();
    		if (isSafe(requestUrl))
    		{
    			requestUrl = requestUrl.substring(requestUrl.indexOf("/"));
    			if (!excludeUrl(requestUrl))
    			{
    				while (params.hasMoreElements())
    				{
    					String cache = req.getParameter((String) params.nextElement());
    					if (StringUtils.isNotBlank(cache))
    					{
    						if (!isSafe(cache))
    						{
    							isSafe = false;
    							break;
    						}
    					}
    				}
    			}
    		}
    		else
    		{
    			isSafe = false;
    		}
    		if (!isSafe)
    		{
    			request.setAttribute("msg", "There is some illegal characters in paramters.");
    			request.getRequestDispatcher(errorPath).forward(request, response);
    			return;
    		}
    		else
    		{
    			String referer = request.getHeader("referer");
    			if (!("/index.jsp".equals(request.getServletPath()) || "/refresh.jsp".equals(request.getServletPath())))
    			{
    				if(request.getServletPath()!=null&&request.getServletPath().endsWith(".action")){
    					
    				}else if (referer == null || !referer.contains(request.getServerName()))
    				{
    					System.out.println("跨站請(qǐng)求偽造");
    					//轉(zhuǎn)到一個(gè)錯(cuò)誤的圖片
    				    request.getRequestDispatcher(errorPath).forward(request, response);
    				}
    			}
    		}
    		filterChain.doFilter(req, resp);
    	}
    
    	private static boolean isSafe(String str)
    	{
    		if (StringUtils.isNotBlank(str))
    		{
    			for (String s : safeless)
    			{
    				String[] strs = str.split("/");
    				for (String urlStr : strs)
    				{
    					if (s.equals(urlStr.toLowerCase()))
    					{
    						return false;
    					}
    				}
    			}
    		}
    		return true;
    	}
    
    	private boolean excludeUrl(String url)
    	{
    		if (excludePaths != null && excludePaths.length > 0)
    		{
    			for (String path : excludePaths)
    			{
    				if (url.toLowerCase().equals(path))
    				{
    					return true;
    				}
    			}
    		}
    		return false;
    	}
    
    	public void destroy()
    	{
    	}
    
    	public void init(FilterConfig config) throws ServletException
    	{
    		this.config = config;
    		errorPath = config.getInitParameter("errorPath");
    		String excludePath = config.getInitParameter("excludePaths");
    		if (StringUtils.isNotBlank(excludePath))
    		{
    			excludePaths = excludePath.split(",");
    		}
    	}
    }
    


      本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
      轉(zhuǎn)藏 分享 獻(xiàn)花(0

      0條評(píng)論

      發(fā)表

      請(qǐng)遵守用戶 評(píng)論公約

      類似文章 更多

      主站蜘蛛池模板: 久久免费精品国自产拍网站| 高清一卡二卡三卡四免费| 人妻精品久久无码专区精东影业| 日韩AV片无码一区二区不卡电影| 成人午夜大片免费看爽爽爽| 99久久免费只有精品国产| 无套内谢少妇一二三四| 久热爱精品视频线路一| 亚洲av日韩在线资源| 色8久久人人97超碰香蕉987 | 一区二区中文字幕av| 99久久无色码中文字幕| 亚洲一区二区三区啪啪| 久久亚洲中文字幕伊人久久大| 亚洲国产午夜精品福利| 亚洲 欧美 国产 制服 动漫| 暖暖日本手机免费观看中文| 欧美XXXX色视频在线观看| 日韩中文字幕V亚洲中文字幕| 国99久9在线 | 免费| 国产裸体美女视频全黄| 高清中文字幕国产精品| 国产乱子伦农村叉叉叉| 国产成人AV大片大片在线播放 | 鲁丝片一区二区三区免费| 男人把女人桶爽30分钟| 亚洲人成网线在线播放VA| 四虎成人精品无码| 国产初高中生在线视频| 日韩有码中文字幕国产| 无码熟妇人妻AV在线电影| 亚洲爆乳少妇无码激情| 日韩V欧美V中文在线| 亚洲精品宾馆在线精品酒店| 亚洲国产精品久久久久久久| 国产亚洲欧美另类一区二区| 国产一区二区不卡91| 草草影院精品一区二区三区| 精品久久久久久成人AV| 色天天天综合网色天天| 国产高清在线男人的天堂|