列表

详情


 阅读下列说明,回答问题l至问题4,将解答填入答题纸的对应栏内。
【说明】
某大型披萨加工和销售商为了有效管理披萨的生产和销售情况,欲开发一套基于Web的信息系统。其主要功能为销售、生产控制、采购、运送、存储和财务管理等。系统采用Java EE平台开发,页面中采用表单实现数据的提交与交互,使用图形(Graphics)以提升展示效果。【问题1】(6分)
设计两个表单项输入测试用例,以测试XSS(跨站点脚本)攻击。系统设计时可以
采用哪些技术手段防止此类攻击。  
【问题2】(3分)
简述图形测试的主要检查点。
【问题3】 (5分)
简述页面测试的主要方面。
【问题4】 (6分)
系统实现时,对销售订单的更新所用的SQL语句如下:
    PreparedStatement pStmt = connection,prepareStatementC(“UPDATE SalesOrder SET
status=?WHERE OrderID=?;”);
  然后通过setString(...);的方式设置参数值后加以执行。
  设计测试用例以测试SQL注入,并说明该实现是否能防止SQL注入。

参考答案: 【问题1】:
用例1:<script>alert('dddd')</script>
用例2:< IMG SRC="javascrip\r
           \nt:alert('XSS');" >  或<b onmouseover=alert('dddd')>click me</b>
防御XSS攻击方法:验证所有输入数据,有效检测攻击;对所有输出数据进行适当的编码,以防止任何已成功注入的脚本在浏览器端运行。

防御规则:
1.不要在允许位置插入不可信数据
2.在向HTML元素内容插入不可信数据前对HTML解码
3.在向HTML常见属性插入不可信数据前进行属性解码
4.在向HTML JavaScript DATA Values插入不可信数据前,进行JavaScript解码
5.在像HTML样式属性插入不可信数据前,进行CSS解码
6.在向HTML URL属性插入不可信数据前,进行URL解码
【问题2】:
图形测试主要检查点:
•颜色饱和度和对比度是否合适
•需要突出的链接的颜色是否容易识别
•是否正确加载所有的图像
【问题3】:
•页面的一致性如何
•在每个页面上是否设计友好的用户界面和直观的导航系统
•是否考虑多种浏览器的需要
•是否建立了页面文件的命名体系
•是否充分考虑了合适的页面布局技术,如层叠样式表、表格和帧结构等
【 问题4】:
能防止SQL注入
Pstmt.setString('1' or '1' = '1'--,status)
Pstmt.setString('2' or '1' = '1',orderID)

详细解析:

【问题1】
XSS攻击:跨站脚本攻击(Cross Site Scripting)是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。
用例1:<script>alert('dddd')</script>
用例2:< IMG SRC="javascrip\r
           \nt:alert('XSS');" >   或<b onmouseover=alert('dddd')>click me</b>
防御XSS攻击方法:验证所有输入数据,有效检测攻击;对所有输出数据进行适当的编码,以防止任何已成功注入的脚本在浏览器端运行。
防御规则:
不要在允许位置插入不可信数据
在向HTML元素内容插入不可信数据前对HTML解码
在向HTML常见属性插入不可信数据前进行属性解码
在向HTML JavaScript DATA Values插入不可信数据前,进行JavaScript解码
在像HTML样式属性插入不可信数据前,进行CSS解码
在向HTML URL属性插入不可信数据前,进行URL解码
【问题2】
图形测试,主要检查点如下:
颜色饱和度和对比度是否合适
需要突出的链接颜色是否容易识别
是否正确加载所有的图形
【问题3】
页面是信息的载体,直接体现WEB沾点的设计水平,一个好的页面因信息层次清晰而让用户一目了然;因涉及巧妙、精致美观而让用户流连忘返;因恰当使用各种元素能完成许多功能而不显拥挤。对页面设计的测试可以从以下几个方面进行:
页面的一致性如何
在每个页面上是否设计友好的用户界面和直观的导航系统
是否考虑多种浏览器的需要
是否建立了页面文件的命名体系
是否充分考虑了合适的页面布局技术,如层叠样式表、表格和帧结构等
【问题4】
SQL注入是黑客攻击数据库的一种常用方法,其实就是通过把SQL命令插入到Web表单或页面请求的查询字符串中提交,最终达到欺骗服务器执行恶意的SQL命令,来达到攻击的目的。
对于本题由于将SQL语句中的输入值,使用参数方式传送,而且SQL语句进行预编译,这样由于防止注入式攻击,测试用例设计可参考:
Pstmt.setString('1' or '1' = '1'--,status)
Pstmt.setString('2' or '1' = '1',orderID)

上一题