Web用户登录---验证码的设计与实现

// 前端页面代码
<html>
<head>
  <title>登录页面</title>
  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="expires" content="0">
  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  <meta http-equiv="description" content="This is my page">
  <script type="text/javascript">
    function myReload() {
      document.getElementById("CreateCheckCode").src = document.getElementById("CreateCheckCode").src + "?nocache=" + new Date().getTime();
    }
  </script>
</head>

<body>
  <form action="loginServlet" method="get">
    <p class="font tdheight"> 验证码:<input type="text" name="checkCode" style="width:80px;height:35px;">
      <img src="pictureCheckCode" id="CreateCheckCode" align="middle" style="margin-top:-10px;">
      <br>
      <a href="" onclick="myReload()" style="font-size:12px;color:red;margin-left:156px;">看不清,换一个</a>
    </p>
    <br>
    <input type="submit" value="提交" class="font" style="width:240px;height:35px;background:#f19e28">     </form>
</body>

</html>
// 一道图形验证码选择题
关于web表单登录中用到的图形验证码的实现,以下做法不正确的有:(A,B,D)

A 返回给浏览器的html代码中包含图形验证码和文本字符串,登录前客户端判断输入内容和页面中保存的内容是否一致
B 服务器端在返回的图片和cookie中同时包含图形验证码,登录前客户端判断输入内容和cookie保存的内容是否一致
C 服务器端生成验证码后一方面通过图片将验证码返回给客户端,同时在服务器端保存文本的验证码,由服务器端验证输入内容是否正确
D 浏览器通过识别图形验证码中的内容和用户输入的内容判断是否一致 

答案:ABD
解析:A B选项都把正确的验证码文本放在了客户端,这是违背了验证码的初衷的。爬虫或者是恶意程序依旧可以通过各种手段获取你嵌入在html文本或者保存在cookie中的正确验证码文本,模拟表单提交来达到攻击的目的。  
  D选项更是浏览器自动无法识别图形验证码的内容。  
  C选项才是正确的实现方式,发送到客户端的只有图片形式的验证码,服务器端保存cookie对应的图形验证码的正确文本。客户端表单提交时到服务器端验证。

参考链接:
Web用户登录---验证码的设计与实现

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容