JSP前後端用戶輸入內容包含html或JS代碼的處理

一、列表顯示包含Html代碼或者JS代碼

前端通過服務器獲取列表數據,直接顯示的情況:
後端代碼:

method.jsp

<%@ page import="org.springframework.web.util.HtmlUtils" %>
<%!
public String getForm(){
    String form= "<script>alert('123');</script>";
    //把html的特殊字符轉換成實體字符,如空格轉換爲&#160;
    //如果不加下面這句,在填充表單的時候,會將上面的字符串當做js代碼執行
    form=  HtmlUtils.htmlEscapeDecimal(form);
    return form;
}
%>

前端代碼:xx.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@include file="method.jsp" %>


<!--服務器代碼部分  -->
<%
    String form=getForm();
%>
<!--js部分變量初始化-->
<script type="text/javascript">
    var form= "<%=form%>";
    $("#div1").html(form); 
</script>
<html>
    <div id='div1'></div>
</html>

二、用戶輸入中包含html代碼或者js代碼,服務器端接收報錯問題

  當用戶提交的表單數據中包含html或者js代碼的時候,服務器端使用request.getParameter(“companyName”); 接收url中傳過來的參數時會報錯。

myfunction.js

//替換掉特殊字符
function replaceAllS(str){

    //str = str.replace(/&/g, "&amp;");  //放前面,防止後面替換來的&再次被替換
    str = str.replace(/ /g, "&#160;");
    str = str.replace(/</g, "&#60;");
    str = str.replace(/>/g, "&#62;");
    str = str.replace(/"/g, "&#34;");
    str = str.replace(/'/g, "&#39;");

    return str;
}

//實體字符轉換爲原字符,在頁面引用時,如賦值給某個input的value時,先轉換回元字符
function deReplaceAllS(str){


    str = str.replace(/&#60;/g, "<");
    str = str.replace(/&#62;/g, ">");
    str = str.replace(/&#160;/g, " ");
    str = str.replace(/&#34;/g, "\"");
    str = str.replace(/&#39;/g, "'");

    return str;
}

前端頁面的js,處理提交表單操作,提交事件調用

function submitForm () {
        var inputStr = jQuery("#inputid").val();

        inputStr  = replaceAllS(inputStr  );

            jQuery.ajax({

                    url:"/XX/AjaxDealForm.jsp", 
                    data: { 'inputStr  ':inputStr  },
                    dataType:'json',
                    success: function(data){                        
            }); 
}

後端處理ajax提交數據的jsp頁面

<%@ page import="org.springframework.web.util.HtmlUtils" %>
<%
    String inputStr  = request.getParameter("inputStr");;
    //把html的實體字符轉換成特殊字符,如&#160轉換爲空格;

    inputStr  =  HtmlUtils.htmlUnescape(inputStr );
//這樣就可以對該字符串進行處理了,和用戶輸入的一致
%>
發佈了38 篇原創文章 · 獲贊 10 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章