色婷五一,精品亚洲欧美一区二区三区日产 ,精选国产AV剧情,无码丰满少妇2在线观看

18600329666

咨詢技術(shù)專家

掃一掃
與技術(shù)專家在線溝通

Menu
SpringMVC處理XSS跨站、SQL注入(盲注)攻擊的方法分析
       java語言主要用于WEB開發(fā),而WEB項(xiàng)目一般暴露在公網(wǎng),被入侵和攻擊的可能性就會(huì)增加,如何優(yōu)化架構(gòu)已達(dá)到抵御攻擊的目的對(duì)于WEB項(xiàng)目和WEB開發(fā)工程師顯得尤為重要,能不能處理安全方面的問題也是衡量一個(gè)開發(fā)工程師技術(shù)能力的重要標(biāo)準(zhǔn),本文通過RSS,SQL注入的攻擊原理開始到springmvc的處理方法分析解決攻擊的方法
      一、RSS攻擊與SQL注入原理分析

       1、Rss攻擊原理介紹

  • XSS攻擊介紹:XSS攻擊是Web攻擊中最常見的攻擊方法之一,是通過對(duì)網(wǎng)頁注入可執(zhí)行代碼(HTML,JAVASCRIPT)且成功地被瀏覽器執(zhí)行,達(dá)到攻擊的目的,形成了一次有效XSS攻擊
  • 攻擊進(jìn)行的條件:需要向web頁面注入惡意代碼并且這些惡意代碼能夠被瀏覽器成功的執(zhí)行。
       2、SQL注入原理與介紹
  • 攻擊介紹:SQL注入即是指web應(yīng)用程序?qū)τ脩糨斎霐?shù)據(jù)的合法性沒有判斷,攻擊者可以在web應(yīng)用程序中事先定義好的查詢語句的結(jié)尾上添加額外的SQL語句,以此來實(shí)現(xiàn)欺騙數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行非授權(quán)的任意查詢,從而進(jìn)一步得到相應(yīng)的數(shù)據(jù)信息。
  • SQL注入攻擊的典型手段:判斷應(yīng)用程序是否存在注入漏洞;收集信息、并判斷數(shù)據(jù)庫(kù)類型;根據(jù)注入?yún)?shù)類型,重構(gòu)SQL語句的原貌;猜解表名、字段名;獲取賬戶信息、攻擊web或?yàn)橄乱徊焦糇鰷?zhǔn)備
       3.SQL盲注原理與介紹
  • SQL盲注介紹: 盲注就是在sql注入過程中,sql語句執(zhí)行的選擇后,選擇的數(shù)據(jù)不能回顯到前端頁面。此時(shí),我們需要利用一些方法進(jìn)行判斷或者嘗試,這個(gè)過程稱之為盲注
      二、解決辦法
        解決SQL注入和跨站腳本攻擊的基本方法是在用戶提交數(shù)據(jù)的時(shí)候?qū)Ψ欠ㄗ址M(jìn)行攔截處理
        第一種方法:直接使用jstl的標(biāo)簽即可解決非法字符的問題。在解析從服務(wù)器端獲取的數(shù)據(jù)時(shí)執(zhí)行以下escapeHTML()即可。
        附:Javascript方法:
   String.prototype.escapeHTML = function () {
          return this.replace(/&/g, ‘&’).replace(/>/g, ‘>’).replace(/
    }
        第二種解決方法:通過SPRINGMVC攔截器攔截并過濾危險(xiǎn)字符

  注:在使用StringEscapeUtils時(shí)需要注意escapeHtml和escapeJavascript方法會(huì)把中文字符轉(zhuǎn)換成Unicode編碼,如果通過標(biāo)簽或者EL表達(dá)式展示時(shí),能夠正確還原,但是如果使用類似于Ext這樣的前端組件來展示這部分內(nèi)容時(shí),不能正常還原。
 
  例:
  public class StringEscapeEditor extends PropertyEditorSupport {
  private boolean escapeHTML;
  private boolean escapeJavaScript;
  private boolean escapeSQL;
  public StringEscapeEditor() { super(); }
  public StringEscapeEditor(boolean escapeHTML, boolean escapeJavaScript, boolean escapeSQL) {
    super();
    this.escapeHTML = escapeHTML;
    this.escapeJavaScript = escapeJavaScript;
    this.escapeSQL = escapeSQL;
    }
  @Override
  public void setAsText(String text) {
    if (text == null) {
    setValue(null);
  } else {
    String value = text;
    if (escapeHTML) { value = StringEscapeUtils.escapeHtml(value); }
    if (escapeJavaScript) { value = StringEscapeUtils.escapeJavaScript(value); }
    if (escapeSQL) { value = StringEscapeUtils.escapeSql(value); } setValue(value); }
    }
  @Override
  public String getAsText() { Object value = getValue(); return value != null ? value.toString() : “”;     }
  }
 
  下面要將這個(gè)Editor和Spring的Controller綁定,使服務(wù)器端接收到數(shù)據(jù)之后能夠自動(dòng)轉(zhuǎn)移特殊字符,在@Controller中注冊(cè)@InitBinder
  @InitBinder
  public void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(String.class, new StringEscapeEditor(false, false, false));
}
以上兩種方法各有利弊,第二種方法對(duì)特殊字符的處理需要加強(qiáng)和改進(jìn)