『壹』 如何運用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進行查詢。