2017-11-13 2 views
0

안녕하세요 (내가 영어에서 좋은 아니에요 죄송합니다.)방법 만 입력 BR HTML 태그를

내가 HTML5/CSS3, 자바 스크립트, JSP에서 사용하는 모든 주석 및 응답 시스템을 구현하고있어 허용합니다.

는 I는 사용자가이 DB에 등록 된 문자를 쓴 경우에 어떠한 시스템을 구축하지만, 이러한 ("<가 ','> '는) 치환으로서 HTML 태그의 징후,'&한다 '& LT'.

이것은 스크립트 공격, SQL 쿼리 삽입을 보호하는 보안 용입니다.

하지만 문제가 있습니다. 게시판보기 페이지에서 새 줄에 대해서만 br 태그에 대한 권한을 만들고 싶습니다.

어떻게 구현할 수 있습니까? 부디.

이 지금까지 페이지를 한 등록되어

<%@ page contentType="text/html; charset=UTF-8" language="java" import="java.sql.*, java.net.InetAddress"%> 
<!doctype html> 
<html> 
<head> 
<%@ include file="../dbinfo.jsp" %> 

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<% request.setCharacterEncoding("UTF-8"); %> 



<% 
String nums = request.getParameter("num"); 
%> 

<% 
    PreparedStatement pstmt = null; 
    ResultSet rs = null; 
    Calendar cal = Calendar.getInstance(); 
    String date = Integer.toString(cal.get(Calendar.YEAR)) + "-"; 
    date += Integer.toString(cal.get(Calendar.MONTH)+1) + "-"; 
    date += Integer.toString(cal.get(Calendar.DATE)) + " "; 
    date += Integer.toString(cal.get(Calendar.HOUR_OF_DAY)) + ":"; 
    date += Integer.toString(cal.get(Calendar.MINUTE)) + ":"; 
    date += Integer.toString(cal.get(Calendar.SECOND)); 
    String reply_num = null; 
    String result ="n"; 
    String SQL = "select (reply_num+1) as reply_num from board_reply order by reply_num desc"; 
    pstmt = con.prepareStatement(SQL); 
    rs = pstmt.executeQuery(); 
    if(rs.next()){ 
     reply_num = rs.getString("reply_num"); 
    }else{ 
     reply_num = "1"; 
    } 
     SQL = "insert into board_reply(reply_num, text, userid, board_num, date, ip) values(?, ?, ?, ?, ?, ?)"; 
     pstmt = con.prepareStatement(SQL); 
     pstmt.setString(1, reply_num); 
     String text = (String) request.getParameter("ttext"); 
     String ip = request.getRemoteAddr(); 
     text = text.replaceAll("\r\n", "<br>"); 
     text = text.replaceAll("<", "&lt;"); 
     text = text.replaceAll(">", "&gt;"); 
     pstmt.setString(2, text); 
     pstmt.setString(3, (String) request.getParameter("userid")); 
     pstmt.setString(4, nums); 
     pstmt.setString(5, date); 
     pstmt.setString(6, ip); 
     pstmt.executeUpdate(); 

    pstmt.close(); 
    rs.close(); 

%> 


</html> 

<script> 
alert("your texts are registered successfully!"); 
location.href ="board_list.jsp" 
</script> 

답변

1

아주 간단한 방법은, 그냥 완전히 대체하기의 순서를 변경

text = text.replaceAll("<", "&lt;"); 
text = text.replaceAll(">", "&gt;"); 
text = text.replaceAll("\r\n", "<br>"); 

이 당신이

을 물어 무엇을 위해 일한다
+1

나는 해결되었다. 이 어색한 질문에 대답 해 주셔서 감사합니다 :) – hsw4840

관련 문제