一、搜索引擎
网上有一大堆的PHP程序搜索引擎是有问题的,也就是提交特殊字符可以显示所有记录,包括不符合条件的,其实这个危害也不算大,因为允许用户输入关键字进行模糊查询的地方大多数都允许检索所有的记录。很多查询的设计就是这样的。
查询是只读的操作应该不会对数据产生破坏作用,不要太担心。不过泄露隐私不知道算不算危害,下面是一个标准的搜索引擎:
<form method="GET" action="search.php" name="search"> <?php mysql_connect($servername,$dbusername,$dbpassword) or die ("数据库连接失败"); $keywords = 网学推荐免费论文原创论文文章排行榜
浏览:
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn]
您电脑的分辨率是
像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 if (!empty($keywords)) { //$keywords = addslashes($keywords); //$keywords = str_replace("_","\_",$keywords); //$keywords = str_replace("%","\%",$keywords); $sql = "SELECT * FROM ".$db_prefix."article WHERE title LIKE ''%$keywords%'' $search ORDER BY title DESC"; echo "<p>SQL Query:$sql<p>"; if ($tatol <=0){ |
一般程序都是这样写的,如果缺乏变量检查,我们就可以改写变量,达到“注入”的目的,尽管没有危害,当我们输入“___” 、“.__ ”、“%”等类似的关键字时,会把数据库中的所有记录都取出来。如果我们在表单提交:
%'' ORDER BY articleid/* |
SQL语句就被改变成下面的样子了,
SELECT * FROM article WHERE title LIKE ''%%'' ORDER BY articleid/*%'' ORDER BY title DESC |
就会列出所有记录,包括被隐藏的,还可以改变排列顺序。这个虽然危害不大,也算是注入的一种方式了吧?
二、查询字段
查询字段又可以分成两种,本表查询和跨表查询,这两种查询和ACCESS、MSSQL差不多,甚至更强大、更灵活、更方便。不知道为什么就是有人认为比ASP难?我们在ASP中经常使用的个别函数在PHP里要有小小的改动,如下:
① 本表查询
看下面一条SQL语句,多用在论坛或者会员注册系统查看用户资料的,
<?php mysql_connect($servername,$dbusername,$dbpassword) or die ("数据库连接失败"); $sql = "SELECT * FROM user WHERE username=''$username''"; if (!$row) { echo "你要查询的用户ID是:$row[userid]\n"; |
当我们提交的用户名为真时,就会正常返回用户的ID,如果为非法参数就会提示相应的