六月丁香五月婷婷,丁香五月婷婷网,欧美激情网站,日本护士xxxx,禁止18岁天天操夜夜操,18岁禁止1000免费,国产福利无码一区色费

學(xué)習(xí)啦>學(xué)習(xí)電腦>電腦安全>網(wǎng)絡(luò)安全知識(shí)>

如何有效防止XSS攻擊

時(shí)間: 權(quán)威724 分享

  XSS(跨站腳本)漏洞是一種Web應(yīng)用程序安全漏洞,常被黑客用來(lái)對(duì)Web用戶發(fā)起攻擊。下面學(xué)習(xí)啦小編整理了一些資料為大家講解如何有效防止XSS攻擊的方法,希望對(duì)你有用!

  什么是XSS攻擊?

  XSS即為跨站腳本攻擊(Cross Site Scripting),為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫(xiě)混淆,故將跨站腳本攻擊縮寫(xiě)為XSS。惡意攻擊者往Web頁(yè)面里插入惡意Script代碼,當(dāng)用戶瀏覽該頁(yè)之時(shí),嵌入其中Web里面的Script代碼會(huì)被執(zhí)行,從而達(dá)到惡意攻擊用戶的特殊目的。

  如何安全有效的防止XSS攻擊呢?

  最近,有個(gè)項(xiàng)目突然接到總部的安全漏洞報(bào)告,查看后知道是XSS攻擊。

  問(wèn)題描述:

  在頁(yè)面上有個(gè)隱藏域:

  XML/HTML Code 復(fù)制內(nèi)容到剪貼板
  <input type = "hidden" id = "action" value = "${action}"/> 

  當(dāng)前頁(yè)面提交到Controller時(shí),未對(duì)action屬性做任何處理,直接又回傳到頁(yè)面上

  如果此時(shí)action被用戶惡意修改為:***" "***

  此時(shí)當(dāng)頁(yè)面刷新時(shí)將執(zhí)行alert(1),雖然錯(cuò)誤不嚴(yán)重,但是任何安全隱患都應(yīng)受到重視。

  解決思路:

  該問(wèn)題是由于對(duì)用戶輸入數(shù)據(jù)(隱藏域)未做任何處理,導(dǎo)致非法數(shù)據(jù)被執(zhí)行,那么解決該問(wèn)題的核心思路就是對(duì)用戶數(shù)據(jù)做嚴(yán)格處理,對(duì)任何頁(yè)面?zhèn)鬟f的數(shù)據(jù)都不應(yīng)過(guò)分信任,處理方法如下:

  1.在頁(yè)面上對(duì)action參數(shù)做轉(zhuǎn)義處理,${action?html}(前端技術(shù)采用freemarker),但是此種方法只能對(duì)單個(gè)屬性有效,如果此時(shí)項(xiàng)目處于維護(hù)期且有大量此種問(wèn)題,修復(fù)的難度較大且不便于統(tǒng)一維護(hù)

  2.在服務(wù)端對(duì)用戶數(shù)據(jù)做轉(zhuǎn)義處理,此時(shí)需要?jiǎng)?chuàng)建一個(gè)filter,對(duì)request進(jìn)行二次封裝,核心代碼如下:

  Java Code 復(fù)制內(nèi)容到剪貼板

  import javax.servlet.http.HttpServletRequest;

  import javax.servlet.http.HttpServletRequestWrapper;

  import org.apache.commons.lang3.StringEscapeUtils;

  public class XssRequestWrapper extends HttpServletRequestWrapper {

  public XssRequestWrapper(HttpServletRequest request) {

  super(request);

  }

  public String getParameter(String name) {

  String value = super.getParameter(name);

  if (value == null) {

  return null;

  }

  return StringEscapeUtils.escapeHtml4(value);

  }

  public String[] getParameterValues(String name) {

  String[] values = super.getParameterValues(name);

  if (values == null) {

  return null;

  }

  String[] newValues = new String[values.length];

  for (int i = 0; i < values.length; i++) {

  newValues[i] = StringEscapeUtils.escapeHtml4(values[i]);

  }

  return newValues;

  }

  }

  XssRequestWrapper是對(duì)request進(jìn)行的二次封裝,最核心的作用是對(duì)request中的參數(shù)進(jìn)行轉(zhuǎn)義處理(需要用到commons-lang3.jar)

  定義filter,核心的代碼如下:

  Java Code 復(fù)制內(nèi)容到剪貼板

  @Override

  public void doFilter(ServletRequest request,

  ServletResponse response,

  FilterChain chain) throws IOException, ServletException {

  HttpServletRequest req = (HttpServletRequest) request;

  chain.doFilter(new XssRequestWrapper(req), response);

  }

如何有效防止XSS攻擊

什么是XSS攻擊? XSS即為跨站腳本攻擊(Cross Site Scripting),為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫(xiě)混淆,故將跨站腳本攻擊縮寫(xiě)為XSS。惡意攻擊者往Web頁(yè)面里插入惡意Script代碼,當(dāng)用戶瀏覽該頁(yè)之時(shí),嵌入其中Web里面
推薦度:
點(diǎn)擊下載文檔文檔為doc格式
511693