以下代码是否在某些JSP页面中添加了XSS漏洞?
<!-- <%=paramName%>=<%=request.getParameter(paramName)%><BR> -->
Run Code Online (Sandbox Code Playgroud)
它看起来像一个"剩余的调试",绝对应该从代码中删除,但它有多危险?
我想保护我的网站形式xss,我想确保我的所有数据都是正确和一致的,所以我不想允许向我的数据库添加任何脚本,这是因为我的数据可能被其他Web服务使用,所以我想确保我的数据是正确的,不会给别人带来任何问题.
我想只在输入数据时进行验证,而不是在输出中进行验证,因此我只进行一次验证,并且我将确保我的数据库中不存在任何脚本.
编辑:请检查我添加的最后一条评论.
之前已经使用注释语法对此进行了回答:Aspectj覆盖方法的参数
但我无法弄清楚如何使用AspectJ声明语法来实现它.以下应该在方法中的每个字符串前添加"Poop",但事实并非如此.
public aspect UserInputSanitizerAdvisor {
pointcut unSafeString() : execution(@RequestMapping * * (..));
Object around() : unSafeString() {
//thisJoinPoint.getArgs();
//proceed();
System.out.println("I'm Around");
Object[] args = thisJoinPoint.getArgs();
if (args != null) {
for (int i = 0; i < args.length; i++) {
Object o = args[i];
if (o != null && o instanceof String) {
String s = (String) o;
args[i] = "poop: " + s;
}
}
}
return proceed();
}
}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何给出"proceed()"所有的论点.
我在包含HTML文本的数据库上有一个字段,我需要将其打印到JSP页面中.我该如何呈现HTML?使用<c:out value="${text}" />我可以看到带有HTML标签的文本.换句话说,它正在逃避HTML.
我必须在带有JSTL的页面中显示一些已经转义的HTML标记的内容。
我知道的excapeXml是用于转义可以解释为标记的字符。但似乎这只是工作了平原和转义HTML: <p>This is the news</p>,它不能正确的工作已经逃脱HTML: <p>This is the news</p>。
那么,如何使用JSTL来对已经转义的HTML进行转义?
我想将CDI SessionScoped bean注入JSP页面.
import javax.enterprise.context.SessionScoped;
import java.io.Serializable;
@SessionScoped
public class UserSessionBean implements Serializable {
private String email = "email";
public UserSessionBean(){}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Run Code Online (Sandbox Code Playgroud)
当我以这种方式使用bean时,它工作正常,我在JSP页面上看到了初始值.
<jsp:useBean id="userSessionBean" class="package.UserSessionBean"/>
<jsp:getProperty name="userSessionBean" property="email"/>
Run Code Online (Sandbox Code Playgroud)
当我将相同的bean注入到我从API中的另一个servlet调用的服务中时,会出现问题.在这种情况下,我没有在JSP页面获得更新值.看起来我在JSP页面和使用@Inject注释的服务内部获得了不同的bean
任何人都可以建议如何在JSP和从servlet访问的服务层中使用相同的SessionScoped bean?
<input type="text" name="designation" value=<%=request.getParameter("designation")%> ></input>
Run Code Online (Sandbox Code Playgroud)
在这个JSP中,我使用window.location.replace()函数通过javascript从另一个JSP页面发送请求参数.
我想在文本框中的这个jsp页面中显示该请求参数.
但它只显示了第一个白色空间的字符串的一部分.剩余的字符串被修剪.
可能是这个问题的原因是什么?
例如,如果指定="软件工程师",那么它只在文本框中显示"软件",而不是""(空格)和"工程师"