【问题2】(6分)
按照网络安全测评的实施方式,测评主要包括安全功能检测、安全管理检测、代码安全审查、安全渗透、信息系统攻击测试等。王工调阅了部分网站后台处理代码,发现网站某页面的数据库查询代码存在安全漏洞,代码如下:
1 <?php
2 if(isset($_GET[‘Submit’])) {
3
4 //Retrieve data
5 $id = $_GET[‘id’];
6
7 $getid = ”SELECT first_name, last_name FROM users WHRER user_id = ‘$id’ ”;
8 $result = mysql_query($getid) or die(‘<pre>’ . mysql_error() . ‘<pre>’);
9
10 $num =mysql_numrows($result);
11
12 $i = 0;
13 while($i < $num){
14
15 $first = mysql_result($result, $i, “first_name”);
16 $last = mysql_result($result, $i, “last_name”);
17
18 ehco ‘<pre>’
19 ehco ‘ID: ’ . $id . ‘<br>First name: ’ .$first . ‘<br>Surname: ’ .$last;
20 ehco ‘<pre>’
21
22 $i++;
23 }
24 }
25 ?>
(1)请问上述代码存在哪种漏洞?
(2)为了进一步验证自己的判断,王工在该页面的编辑框中输入了漏洞测试语句,发起测试。请问王工最有可能输入的测试语句对应以下哪个选项?
A. or 1=1--order by 1 B. 1 or ‘1’=‘1’=1 order by 1#
C. l’ or 1=1 order by 1# D. 1'and‘1’=‘2’order by 1#
(3)根据上述代码,网站后台使用的哪种数据库系统?
(4)王工对数据库中保存口令的数据表进行检查的过程中,发现口令为明文保存,遂给出整改建议,建议李工对源码进行修改,以加强口令的安全防护,降低敏感信息泄露风险。下面给出四种在数据库中保存口令信息的方法,李工在安全实践中应采用哪一种方法?
A. Base64 B. MD5 C. 哈希加盐 D. 加密存储