Web应用程序上的CSRF预防

时间:2017-11-05 17:20:14

标签: javascript csrf-protection

我正在创建一个网络应用程序,并试图保护应用程序。我已经完成了漏洞扫描,并在登录页面上找到了XSS。我无法想象如何从XSS保护应用程序。有人可以请帮助。我已经停止sql注入登录页面但无法阻止XSS。我在burp套件中找到了漏洞,但无法修复它。如果有人有这方面的一些提示将非常适合

     <%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sitting Ducks</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>


<%
   String username = request.getParameter("username");
   String password = request.getParameter("password");
 //String username="";old code
// String password="";old code
 Cookie[] cookies = request.getCookies();
 if (cookies != null)
  for (Cookie c : cookies) {
        if ("username".equals(c.getName())) {
         username= c.getValue();
        }
        else if("password".equals(c.getName()))
        {
            password= c.getValue();
        }
  }

 %>    

<body>
<div id="main">
<div id="top-nav">
        If<b> Carlsberg</b> did Websites... It <b>definitely</b> wouldn't be this!
</div>


<div id="header">
        <img src="images/Banner.jpg" alt="" width="720" height="160" />
</div>
<div id="navigation">

        Menu

        <hr />
        <a href="index.jsp" class="navigation">Home</a>
        <a href='login.jsp' class="navigation">Login</a>
        <a href="index.jsp" class="navigation">Logout</a>
        <a href="search.jsp" class="navigation">Search</a>
        <a href="documents.jsp" class="navigation">Documents</a>
        <a href="Messages.jsp" class="navigation">Messages</a>
        <a href="SendMessage.jsp" class="navigation">Send Message</a>
</div>
<br></br>
<div id="content">

    <h1>Login</h1>
    <form action="ValidateLogin" method="post">
            <table> 
                <tr><td>UserName: </td><td><input type="text" name="username" value="<%=username%>" /></td></tr>
                <tr><td>Password :</td><td><input type="password" name="password" value="<%=password%>"/></td></tr>
                <tr><td><input type="submit" name="Login" value="Login"/></td></tr>
            </table>  
        </form>
    <%
        if(request.getParameter("err")!=null){out.print(request.getParameter("err"));} 
    %>
</div>
<div id="footer">

    <hr />
        Copyright © 2016 | Sitting Ducks

</div>



</div>

</body>

</html>

1 个答案:

答案 0 :(得分:0)

CSRF是一种攻击类型,一个糟糕的网站可以让浏览器在用户不知情的情况下向您的网站发送命令。它实际上很容易被利用。用户的浏览器不会让坏网站访问您网站设置的cookie。但是糟糕的网站可以要求浏览器向您的网站发送请求,浏览器不仅会发送请求,还会发送您设置的cookie。

那么你如何阻止这种攻击呢?使用Javascript!您应该在服务器上创建一个端点,该端点将提供随机生成的令牌。然后,您使用Javascript来请求令牌。但是不要将此令牌存储在cookie中!每次向服务器发出请求时,都要使用Javascript将此令牌附加到请求中。坏网站将无法附加此令牌。

这是另一个探索:What is a CSRF token ? What is its importance and how does it work?