返回介绍

2.7 查看运行情况

发布于 2024-01-21 17:11:03 字数 3004 浏览 0 评论 0 收藏 0

虽然程序的编写已经结束,但我们还需要确认应用程序能不能按预想的样子运行。下面就来逐条确认刚刚开发完成的应用是否满足需求,以及运行上是否存在问题。到了这一步,可能会有人觉得“开发的时候就已经逐条确认过了,肯定不会有问题的”。这种心情可以理解。但要知道,我们在编码后期阶段所作的修改可能会导致之前的功能出现 Bug,而且也难保开发过程中不会遗漏某些需求。因此要想制作一个品质上乘的应用程序,这项确认工作必不可少。

好了,现在让我们回顾一下这个留言板应用的需求。

  1. 在 Web 浏览器上显示一个包含“提交留言”表单的页面
  2. 可以在提交留言表单中输入名字和留言正文
  3. 通过提交留言表单发送的名字和留言内容会被保存
  4. 已保存的名字、留言、提交日期会显示在页面中
  5. 整个应用由一个页面构成,页面上部为提交留言表单,下部显示已提交的内容
  6. 提交的内容按新旧顺序由上到下排列
  7. 可经由网络(互联网)使用本系统
  8. 可同时在多台计算机上显示已提交的内容

现在运行开发服务器,查看成品是否能满足这 8 项需求。

只要通过 Web 浏览器访问 http://127.0.0.1:8000/ 即可查看需求①是否得到了满足。与此同时,由于虚拟机和本地计算机之间经由网络连接,所以⑦和⑧也没有问题。至于②,只要我们能在页面中的表单里填写名字和留言内容,那就是过关了。接下来输入内容并点击提交按钮,随后页面被刷新,刚刚提交的内容显示在了页面上。于是⑤也搞定了。然后重启开发服务器,再次通过 Web 浏览器读取页面,如果之前提交的内容能够正常显示,就表示③和④也 OK。最后我们再进行一次输入和提交,只要后来提交的内容显示在最上方,那么需求⑥也就满足了。

另外,这次我们开发的应用没有对使用者输入的字符串做任何限制,而且输入的内容会直接以植入 HTML 的形式显示出来。因此,接下来需要确认是否存在跨站脚本攻击漏洞。

NOTE

跨站脚本攻击(Cross Site Scripting,XSS3 )是一种常见的漏洞,用户能在某些以植入 HTML 的形式显示输入内容的应用中,故意植入一些攻击型的脚本(比如 HTML 标签或 JavaScript 等)。

XSS 漏洞可被用在会话劫持、钓鱼等恶意行为上。

3 Cross Site Scripting 的缩写为 XSS,这是为了和层叠样式表(Cascading Style Sheet,CSS)有所区分。——编者注

要验证应用中是否含有 XSS 漏洞,只需要像 LIST 2.27 这样,在留言输入栏中键入带有 JavaScript 代码的 HTML 标签,然后点击提交即可。

LIST 2.27 验证跨站脚本攻击时需要输入的内容

<script>alert('NG')</script>

显示提交内容的区域内是否显示出了我们输入的字符串呢?如果该应用含有 XSS 漏洞,那么 NG 字样将显示在浏览器的警告中。

我们在本次开发中使用的是 Jinja2 模板引擎,它在翻译字符串时会自动忽略 HTML 标签的“< 和 >”符号。因此,我们的应用能够成功避免 XSS 漏洞。

建议各位在最后查看运行情况时也检测一下其他可能造成安全问题的漏洞。

NOTE

与 XSS 同样恶名昭彰的漏洞还有跨站请求伪造(Cross Site Request Forgery,CSRF)。用户通过与目标应用程序无关的外部输入表单(这些输入表单通常用于攻击)发送数据,一旦目标应用程序处理了这些数据,就会引发使用者意料之外的操作。

CSRF 漏洞可被用来触发使用者意料之外的操作(比如在线购买商品、泄露个人信息等)。

本章中开发的应用并没有对 CSRF 进行防范。由于 XSS 和 CSRF 这两种攻击手法可以相互组合出新的攻击手法,所以建议各位务必做好防范工作。

如果上述过程全部顺利通过,我们的应用开发就可以宣告完工了。各位辛苦了。

最终的文件结构如下表所示。

文件路径

说明

guestbook.py

服务器程序

guestbook.dat

提交数据文件

static/main.css

CSS 文件

templates/index.html

输出 HTML 的模板,用于显示提交 / 留言列表页面

Web 应用开发的第一步是确定自己要开发什么东西。要是对自己要做的东西没有概念,开发就不可能进行下去。另外,如果必备的页面和功能不够明确,那么编写代码的过程将是相当痛苦的。要想让开发如行云流水般流畅,那就必须将这些不确定的因素统统明确下来,确定一个开发流程。

在本章中,我们强调了 Web 应用是一个发送动态内容的程序,并且用户可以经由 Web 浏览器使用 Web 应用,同时还学习了 Web 浏览器 / 服务器 / 应用之间的基本通信机制。另外,我们还以留言板应用为例,从确定需求到最终完成,边学边练地一起了解了整个应用开发流程。本章学习的开发流程适用于多种应用的开发。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文