相关疑难解决方法(0)

我应该在哪里转义HTML字符串,JSP页面或Servlets?

我很感激为我提供了一套明确的指导方针或处理逃避字符串的裁决.我用来转义字符串的是apache commons-lang-xxjar库.特别是StringEscapeUtils.escapeHtml(String toEscape)方法.

我需要知道:

(1)在JSP页面或Servlet中转义字符串更好?

(2)你从JSTL推荐StringEscapeUtils.escapeHtml(..)或<c:out>是什么?

(3)处理多行字符串,哪个更好,直接在字符串中使用<br>,或者\n和nl2br()方法:

String strError = "Invalid username.\nPlease try again.";

要么

String strError = "Invalid username.<br>Please try again.";

(4)如何转义接收外卡的字符串,例如:

String strError = "Invalid user [%s].<br>Please specify another user."

(5)由于javascript转义字符不同.我应该使用什么来转义要在JSP页面的javascript部分内呈现的Java字符串(例如var name = "<%=javaStringHoldingName%>").

java jsp servlets

17
推荐指数
1
解决办法
2万
查看次数

EL表达式未在JSP中评估

我的servlets/jsp Web应用程序存在一个小问题.我正在尝试在jsp页面中使用jstl.当我使用任何标签时,例如:

<c:out value="${command}"/>
Run Code Online (Sandbox Code Playgroud)

它告诉我

${command} 
Run Code Online (Sandbox Code Playgroud)

在我的浏览器中而不是参数'command'值.我正在使用maven(我猜问题就在这里).这是pom xml依赖项:

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.0.1</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>jstl</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我的web.xml声明标记:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     version="3.0">
Run Code Online (Sandbox Code Playgroud)

和jsp部分:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>

<head>
<title>Parsing results</title>
<link type="text/css" rel="stylesheet" href="css/page.css"/>
<link type="text/css" rel="stylesheet" href="css/table.css"/>
</head>

<body>
<h2 align="center">Results of 
parsing. Parsing method = <c:out value="${command}"/></h2>.......
Run Code Online (Sandbox Code Playgroud)

编辑:设置命令值的代码很简单:

request.setAttribute("command", parser.getName());
Run Code Online (Sandbox Code Playgroud)

然后去

request.getRequestDispatcher(redir).forward(request, response);
Run Code Online (Sandbox Code Playgroud)

请告诉我,我做错了什么!谢谢!

jsp web.xml jstl el

13
推荐指数
1
解决办法
6763
查看次数

如何避免XSS攻击的应用程序?

如何保护我们的Web应用程序免受XSS攻击?如果一个应用程序没有对特殊字符进行任何转换,那么它就很容易受到攻击.

java java-ee

12
推荐指数
1
解决办法
1万
查看次数

JSTL函数用于替换字符串中的引用字符?

用"字符串值内的序列"替换引号字符的最简单方法是什么?

string replace jstl el

10
推荐指数
1
解决办法
2万
查看次数

Markdown或HTML

我要求用户创建,修改和删除自己的文章.我打算使用SO用来创建文章的WMD编辑器.

从我可以收集到的东西SO存储markdown和HTML.为什么这样做 - 有什么好处?

我无法决定是否存储降价,HTML或两者.如果我存储哪一个我检索并转换为显示给用户.

更新:

好吧,我想从目前为止的答案,我应该存储markdown和HTML.这看起来很酷.我也一直在阅读Jeff关于XSS漏洞的博客文章.因为WMD编辑器允许您输入任何HTML,这可能会让我感到头痛.

有问题的博文在这里.我猜我将不得不遵循与SO相同的方法 - 并清理服务器端的输入.

SO使用的清理代码是否可用作开源代码,还是我必须从头开始?

任何帮助将非常感激.

谢谢

html markdown

9
推荐指数
2
解决办法
1916
查看次数

如何从jsp中的HTML属性中转义值以避免XSS攻击?

在jsp页面中,我有一个输入值属性,以这种方式填充:

value="${param.name}"
Run Code Online (Sandbox Code Playgroud)

如果有人设法放置东西,它很容易受到XSS攻击

"><script>doEvil();</script>
Run Code Online (Sandbox Code Playgroud)

如何正确地逃避param.name的值来修复漏洞?

xss jsp

9
推荐指数
1
解决办法
9045
查看次数

在将表单提交给Servlet后,如何在JSP中保留HTML表单字段值?

在从HTML提交数据后,servlet将这些数据添加到我的数据库并将结果消息转发到JSP页面.我希望在转发之后保留表单中最初提交的值.

在servlet中创建一个对象并添加我收到的所有参数并向JSP发送请求是否明智?还有另一种更好的方法吗?

forms jsp servlets retain

6
推荐指数
1
解决办法
2万
查看次数

在EL中替换"\n"

在JSP文件中,我想用new替换换行符(\n)<br />.我试过了

${fn:replace(someString, '\n', '<br />')}
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个错误 '\n' ecnountered, was expeting one of...

我猜这意味着解析器不喜欢这样的东西.

是否可以使用EL做这样的事情?

jsp el

6
推荐指数
1
解决办法
1万
查看次数

java.lang.NumberFormatException:用于JSP页面中的输入字符串

嗨,有人可以帮助为什么这在尝试在JSP页面中显示值时出错.我没有转换任何数字或字符串已转换为数字,但我得到NumberFormatException

我的Servlet获取显示用户记录的请求

if(action.equalsIgnoreCase("update")){
        System.out.println("Came into Update");
        userId=(int) Integer.parseInt(request.getParameter("userid"));
        nbId=request.getParameter("nbId").trim();
        System.out.println("User iD and NBid: "+ userId + nbId);

        User user=new User();
        user.setUser_id(userId);
        user.setUser_nbk(nbId);



        List userRecords=UserDAO.getUserRecord(user);
        request.setAttribute("userRecords", userRecords);
        List owningOrg=Owning_Org_DB.getOwningOrgRecords();
        request.setAttribute("owningOrg", owningOrg);
        request.getRequestDispatcher("WEB-INF/JSP/TableMaintenance/UserNewAdd.jsp").forward(request, response);
Run Code Online (Sandbox Code Playgroud)

POJO:

 @Entity
 @Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
  public class User {

@Id
private int user_id;
private String user_first_name;
private String user_middle_name;
private String user_last_name;

       //getters and setters methos
   }
Run Code Online (Sandbox Code Playgroud)

DAO:

public static List getUserRecord(User obj){

    Logger lo=LoggerFactory.getLogger("UserDAO.getUserRecord");
    Session session= Annotationsessionfactory.getAnnotationSession();
    Transaction tx=session.beginTransaction();

    lo.debug("Request for A user Record");
    //List<User> recList=new ArrayList<User>();
    List recList=null; …
Run Code Online (Sandbox Code Playgroud)

java jsp hibernate jstl

6
推荐指数
1
解决办法
3万
查看次数

避免使用XSS并允许一些带有JavaScript的html标签

我在当前项目中遇到了问题:用户可以使用textarea发送电子邮件.我们允许用户输入他们想要的内容,从而允许用于格式化的HTML.例如,应允许用户将<b>标记用于粗体文本.

完成电子邮件后,用户应该能够动态查看其电子邮件的预览.

但是有一个小问题,如何在显示预览时避免XSS黑客攻击?

您可以使用它们去除它们underscore.js,但这不会格式化它们的预览.

因此,我已禁止所有HTML标签,现在,只允许像标签<hr>,<b>等等.

您对此解决方案有何看法?它足够安全吗?

javascript xss jquery

6
推荐指数
1
解决办法
9929
查看次数

标签 统计

jsp ×6

el ×3

java ×3

jstl ×3

servlets ×2

xss ×2

forms ×1

hibernate ×1

html ×1

java-ee ×1

javascript ×1

jquery ×1

markdown ×1

replace ×1

retain ×1

string ×1

web.xml ×1