‘壹’ 如何运用sql制作一个网页
额 这个的话你可以用asp做,就是你网页里面链接数据库,打开网页的时候列出你数据库查询的内容。这个要学的话用dreamwever有个比较傻瓜的流程,很适合新手,推荐你学习asp+access。access是一个比较简单的数据库。你可以去www.leavescn.com看看 有一些教程和素材。我是站长,想学可以找我。
‘贰’ 通常一个网页,控制在多少条sql合适
每个页面调用10条左右的SQL,数量上偏多(不太复杂页面建议5个以下),不过还是要看页面的复杂度和页面响应时间。建议合并sql(用一些子查询、多层嵌套查询等),毕竟每一次查询就要耗一次IO读写等待时间。
‘叁’ 网页怎么连接sql呢
连接数据库关键代码:
set conn=Server.CreateObject("ADODB.Connection")
conn="Provider=SQLOLEDB;Data Source=(local);DATABASE=数据库名称;
User ID=sql登录名;password=sql登录密码;"
conn.open
如:
set conn=Server.CreateObject("ADODB.Connection")
conn="Provider=SQLOLEDB;Data Source=(local);DATABASE=databasename;
User ID=sa;password=123456;"
conn.open
补充:如果是数据库在本地计算机中,那么Data Source后可以是:"."或者你的计算机名或者“(local)”,不需要""和&&。你可以把上面的代码拷过去稍微改一下,我前阵子做过网上商城的网页系统,连接数据库用的就是这串代码,如果有问题,可以联系我。最后,希望我的解答能够帮到你。
‘肆’ 如何通过注入SQL语句获取网站管理权限及安全措施
一 网站是否存在SQL注入漏洞
网站一般包含一张用户表(用户名和密码)和一张管理员信息表(管理员名称和密码), 输入用户名和密码之后, 一般做法是后台都会执行一条SQL语句,
查询有没有对应的用户和密码, 比如SELECT * FROM SomeTable WHERE UserName = $UserName AND pwd =
$pwd, 如果这条语句返回真, 那么登录操作就完成了.
试想一下如果在学号和密码文本框中输入or=or, 并提交的话, 上面提到的SQL语句就变成了SELECT * FROM SomeTable WHERE
UserName = or=or AND pwd = or=or, 这个语语句变成了一个逻辑表达式, 表达式包含几段, 分别为:
1. SELECT * FROM SomeTable WHERE UserName = (假)
or
2. = (真)
or
3. (假)
and
4. pwd = (假)
or
5. = (真)
or
6. (假)
最后整个逻辑表达式为0|1|0&0|1|0, 这个结果为真(在执行到"0|1|..."的时候整个表达式省略号中的就不计算了,
因为"或"前面已经是真), 因此可以登录成功, 事实上也登录成功了.
二 破解后台数据库的原理
在用户名和密码的文本框中输入or=or, 截至上面所示的第2步, 表达式值为真, 因为后面紧接了一个"或", 所以无论在这后面的表达式是什么,
"真或者假""真或者真"都是为真的. 关键就是or=or中间的那个=, =表示一个字符, 永远为真. 如果我们将这个=改成某个SQL表达式,
如果这个表达式为真, 那么整个表达式就为真.
后面的几个步骤要求用户名和密码文本框中都输入同样的文本, 原因是: 后台的语句格式可能是SELECT * FROM SomeTable WHERE
UserName = $UserName AND pwd = $pwd, 也有可能是SELECT * FROM SomeTable WHERE pwd =
$pwd AND UserName = $UserName, 无论哪一种情况, 只要用户名和密码都输入的文本是一样的, 只要文本中包含的SQL表达式为真,
那么整个表达式就为真. 这样写带来的另一个好处是复制粘贴很方便.
通过写一些SQL表达式来一次一次的测试出数据库里的内容.
三 获取后台数据库的表名
如果将表达式替换为(SELECT COUNT(*) FROM 表名)<>0, 这个表达式用来获取一个表中有多少条记录,
需要做的就是猜这个表名是什么, 猜中了的话, 那么这个表中的记录条数肯定就不会等于0, 那么这个表达式的值就是真的. 常用的表名也就是那么一些,
一个个的代进去试, 最后发现有个叫做admin的表, 它的字段不为空. 很显然, 这个表是用来存放管理员信息的.
四 获取后台数据库表的字段名
现在已经知道这个表叫做admin了, 接下来想办法得到这个表中的字段.
把表达式替换成(SELECT COUNT(*) FROM admin WHERE LEN(字段名)>0)<>0,
这个表达式用来测试admin这个表中是否包含这个字段. LEN(字段名)>0表示这个字段的长度大于0, 在这个字段存在的情况下,
LEN(字段名)>0是始终为真的. 如果包含的话这个字段的话, 整条SELECT语句返回的数字肯定不为0, 也就是说整个表达式为真,
从而得到字段名.
按照这样的方法, 靠猜共得出了三个很关键的字段:id, admin, pass.
五 获取字段的长度
目前已得到的信息是有个admin表, 表中有id, admin, pass字段. 后台中存储用户名和密码,
常规做法是存储它们进行MD5加密后的值(32位), 现在测试一下是不是这样.
把表达式替换为(SELECT COUNT(*) FROM admin WHERE LEN(字段名)=32)<>0,
将admin和pass代进去结果是真, 说明后台存储管理员帐号和密码用的是加密后32位的字段.
六 获取管理员帐号和密码
MD5加密后的字符串包含32位, 且只可能是由0-9和A-F这些字符组成.
1. 获取管理员帐号
将表达式改成(SELECT COUNT(*) FROM admin WHERE LEFT(admin,1)=A)>0,
意思是我猜测某个adimin帐号的第一个字符是A, 如果成功则表达式成立. 失败的话, 把A换成0-9和B-F中的任意字符继续试, 知道成功. 如果成功了,
我再继续猜这个帐号的第二个字符, 假如第一个字符是5, 我猜测第二个字符是A, 那将表达式改成(SELECT COUNT(*) FROM admin WHERE
LEFT(admin,2)=5A)>0. 可以发现字符串中LEFT()函数中的1变成了2, 另外5A代码左边两个字符是5A, 其中5已经确定下来了.
就这样重复不断的猜, 直到得到整个32位的MD5加密后的字符串.
2. 获取该帐号对应的的id
为什么需要获取该帐号对应的id? 原因如下: 按照上一条是可以得到帐号和密码的, 但一张表中可以有若干个管理员帐号和密码, 怎么对应起来呢?
需要通过id. 一个id对应一条记录, 一条记录只有一对匹配的帐号和密码.
将表达式改成(SELECT COUNT(*) FROM admin WHERE LEFT(admin,1)=5 AND id=1)>0,
上一条假设了某帐号第一个字符是5, 只要这个表达式中的"AND id = 1"正确, 那么就可以得知该帐号的id是1. 如果不是1,
换成其它的数字一个个的试一试.
3. 获取帐号对应的密码
现在已经猜出了某管理员的帐号, 并且知道对应的id是多少(假设得出来是4), 现在只要得到该条记录中记录的密码是什么. 同理,
将表达式改成(SELECT COUNT(*) FROM admin WHERE LEFT(pass,1)=A AND id=4)>0,
注意id已经是知道了的4, 现在要一个个的猜pass中从第1个到第32个字符是什么, 方法同"获取管理员帐号"方法.
最后可以得到一个32位的MD5加密后的字符串(密码).
*注: 如果嫌手工得到每个字符是什么太麻烦, 可以自己用C#写一个程序, 模拟一下登录, 通过控制一个循环, 可以很快得到结果.
七 将MD5加密后的帐号和密码转成明文
网上有一些网站数据库里存储了海量(几万亿条)的MD5加密后的暗文对应的明文, 只需输入你需要查找的MD5加密后的字符串就可以查看到明文是什么.
‘伍’ 做网页时如何操作SQL远程数据库
要装SQL2000,装好,选用企业服务器,打开SQL server 组,里面有你本地数据库,你再新建远程SQL SERVER 组(server=服务器IP;uid=服务器名;pwd=服务器密码;database=sql数据库名),建好将远程服务器表找到,右击》所有任务》导入数据(你本地数据)即可!
‘陆’ 网页与SQL如何连接
这是连接sql server 2000数据库的asp代码:
conn_string = "Driver={SQL Server};Database=spider;Server=sql服务器地址;Uid=账号;pwd=密码;"
Set conn = Server.CreateObject("ADODB.Connection")
conn.oipen conn_string
在下面使用asp打开数据库就可以了,比如:
sql="select * from table"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open sql,Conn,1,1
‘柒’ 如果我要把sql和网站连接应该怎么做
网页连
数据库设计
的知识点比较多
首先,你要把数据库配置好,数据库用的什么驱动程序,用户名和密码是什么,里面有些什么表,表里有什么字段你都要很清楚。
然后,从网页连接过去,在此以ASP举例。可以ADO进行连接。设置连接字符串(包括数据库名、数据库类型、用户名、密码、数据库打开方式等),创建
connection对象
。连接后执行
sql语句
,返回查询到的
数据集
,数据库对应表单的行和列就保存在数据集对象(recordset)中。如果你要向数据库中添加数据,用recordset的AddNew方法,或者,用
connection对象
直接执行sql的语句insert
into……,也可以。
最后,在你获取网页中的数据,写到数据库的过程中,你可能还需要VBScript或者
Javascript
之类的
脚本语言
进行简单的处理。
综上,所需要的知识:数据库基础、
脚本语言
、ASP内置对象、ADO接口。
也可以用别的工具,但是大概要学的也差不多吧。
‘捌’ 怎么实现网页和数据库(SQL)的连接
sql
server
2000无论是个人版、企业版还是标准版,只要细版本在8.00.1760以下,均不提供远程数据库连接,即使服务器端工具和客户端工具的设置均有tcp/ip设置和数据库连接属性也设置了rpc远程连接,仍然不能实现远程连接。该怎么解决呢?
解决方案如下:
首先,需要打sp4补丁,该补丁包含了以前sp1、2、3的补丁,安装此补丁后一般要重新启动计算机,再进行远程连接就可以了,如再企业管理器可远程注册服务器、查询分析可连接远程服务器、odbc可连接远程服务器。
要点:
1.确认服务器端sql服务端口号是否为:1433
2.如果不是1433,配置客户端
3.建立服务器端登录帐号,确保角色及管理数据库
一、查看服务器端情况
1.
看ping
服务器ip能否ping通。
这个实际上是看和远程sql
server
服务器的物理连接是否存在。如果不行,请检查网络,查看配置,当然得确保远程sql
server
服务器的ip拼写正确。
2.
在dos或命令行下输入telnet
服务器ip
端口,看能否连通。
如telnet
202.114.100.100
1433
通常端口值是1433,因为1433是sql
server
的对于tcp/ip的默认侦听端口。如果有问题,通常这一步会出问题。通常的提示是“……无法打开连接,连接失败"。
如果这一步有问题,应该检查以下选项。
1)
检查远程服务器是否启动了sql
server
服务。如果没有,则启动。
2)
检查sql
server服务器端有没启用tcp/ip协议,因为远程连接(通过因特网)需要靠这个协议。检查方法是,在服务器上打开
开始菜单->程序->microsoft
sql
server->服务器网络实用工具,看启用的协议里是否有tcp/ip协议,如果没有,则启用它。
3)
检查服务器的tcp/ip端口是否配置为1433端口。仍然在服务器网络实用工具里查看启用协议里面的tcp/ip的属性,确保默认端口为1433,并且隐藏服务器复选框没有勾上。
事实上,如果默认端口被修改,也是可以的,但是在客户端做telnet测试时,写服务器端口号时必须与服务器配置的端口号保持一致。如果隐藏sql
server服务器复选框被勾选,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接,但是tcp/ip协议的默认端口将被隐式修改为2433,在客户端连接时必须作相应的改变(具体方式见
二:设置客户端网络实用工具)。
4)
如果服务器端操作系统打过sp2补丁,则要对windows防火墙作一定的配置,要对它开放1433端口,通常在测试时可以直接关掉windows防火墙(其他的防火墙也关掉最好)。(4、5步我没有做就成功了)
5)
检查服务器是否在1433端口侦听。如果sql
server服务器没有在tcp连接的1433端口侦听,则是连接不上的。检查方法是在服务器的dos或命令行下面输入
netstat
-a
-n
或者是netstat
-an,在结果列表里看是否有类似
tcp
127.0.0.1
1433
listening
的项。如果没有,则通常需要给sql
server
2000打上至少sp3的补丁。其实在服务器端启动查询分析器,输入select
@@version
执行后可以看到版本号,版本号在8.0.2039以下的都需要打补丁。
如果以上都没问题,这时你再做telnet
服务器ip
1433
测试,将会看到屏幕一闪之后光标在左上角不停闪动。恭喜你,你马上可以开始在企业管理器或查询分析器连接了。
‘玖’ SQL数据库和网页怎么连接
aspx最小代码连接数据库
<%@ Page language="c#" codePage="65001"%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.SessionState" %>
<%@ Import Namespace="System.Web.UI" %>
<%@ Import Namespace="System.Web.UI.WebControls" %>
<%@ Import Namespace="System.Web.UI.HtmlControls" %>
<%@ Import Namespace="System.ComponentModel" %>
<%@ Import Namespace="System.Collections" %>
<%
//更新街道交叉口经纬度信息到数据库,如果没有,则插入,有则更新
// 用法: street1=华山路 & street2=衡山路 & lng=11111&lat=4444
System.Web.HttpContext context = this.Context;
System.Text.StringBuilder sb=new System.Text.StringBuilder();
context.Response.AddHeader("Prama","no-cache");
context.Response.CacheControl="private";
context.Response.Expires=0;
context.Response.ContentType="text/html";
//获取参数
string street1=Request["street1"];
string street2=Request["street2"];
string lng =Request["lng"];
string lat =Request["lat"];
if(street1==null) {street1="";}
if(street2==null) {street2="";}
if(lng==null) {lng="";}
if(lat==null) {lat="";}
//获取数据
DataSet ds = new DataSet();
int r=0;
string sql="";
string msgsuccess="操作成功<br/>";
string msgerror="不成功,没有记录<br/>";
string conn = "server=(local);database=callmeal;Uid=sa;Pwd=yyy;";
SqlConnection con = new SqlConnection(conn);
sql=" select * from street";
context.Response.Write(sql);
SqlCommand _cmd=new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter(sql,conn);
da.Fill(ds);
con.Open();
_cmd.Connection =con;
//更新数据
sql=" update street set lng=11 where streetid=1"
_cmd.CommandText=sql;
r=_cmd.ExecuteNonQuery();
if(r==-1)
context.Response.Write(msgerror);
else
context.Response.Write(msgsuccess);
con.Close();
//context.Response.Write(sql);
//context.Response.Write(sb.ToString());
context.Response.Flush();
context.Response.Close();
%>
‘拾’ 网页要怎么与SQL关联起来
你说这种情况属于动态网页,可以在页面上写jdbc连接数据库,就可以使用sql进行查询。