HTML字段XSS漏洞

时间:2016-08-11 16:29:35

标签: javascript html

所以我一直在尝试从头开始使用用户/密码表单编写网站。

<html>
      <head>
            <title>Password Generator</title>
      </head>
      <body>         
            <h1>Password Generator</h1>
            <h3> Let's start: </h3><h3>

            <form action="pwd.php" method="GET">
            <table style="width:100px">
                  <tbody>
                         <tr>
                              <td>
                                   <b>Name:</b>
                              </td>
                              <td> 
                                   <input name="name" value="Name" type="text"> 
                              </td>
                         </tr>
                         <tr>
                              <td>
                                   <b>Size:  </b>
                              </td>
                              <td>
                                   <input min="10" max="1000" name="strength" type="range">
                              </td>
                         </tr>
                  </tbody>
            </table>
            <table style="width:100%">
                   <tbody>
                           <tr>
                               <td></td>
                               <td>
                                   <input name"gen"="" value="Generate" type="submit">
                               </td>
                           </tr>
                    </tbody>
             </table>
        </form>
        <img src="pwd.php?name=strength">
        </h3>
     </body>
</html>

现在我测试了我的网站是否存在XSS漏洞并发现我可以使用表单插入JS,例如:<input name="name" value="Name" onclick="alert('XSS');" type="submit"> 我只需要使用Mozilla Inspector稍微更改HTML,我就可以在我的网站上远程执行JS。

我读过我可以使用JS来防止这种情况,但我不明白它是如何工作的。 我的意思是我可以使用Inspector修改JS,那么它将如何工作?

希望有人可以向我解释一下!

亲切的问候 Raavgo

1 个答案:

答案 0 :(得分:0)

如果您只有静态HTML / CSS页面,则不容易受到XSS的攻击。当涉及预处理器(如PHP)时,会出现XSS。

如果您的网页保持原样,则无需担心。

但是,例如,如果您使用的是PHP并且想要显示提交的值,则需要像这样修改页面:

<input name="name" type="text" value="<?php echo $_GET['name']?>" />

这很容易受到XSS攻击!请勿在代码中使用它!

其中一个解决方案是:

<input name="name" type="text" value="<?php echo htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8')?>" />

来自here