亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ASP+Access數據庫如何防止被下載,如何設置更安全?

ASP+Access數據庫如何防止被下載,如何設置更安全?

心有法竹 2019-04-11 11:11:29
ASP+Access數據庫如何防止被下載,如何設置更安全?
查看完整描述

3 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

現在大部分網站都使用asp+access構建,這樣的話通過下載access數據庫簡單就可以對網站進行破壞!

而很多的網站都不太重視這些,比如數據庫文件名是data.mdb等而又有一部分人認為把數據庫的擴展名改成.asp就萬事大吉了,

其實不然!大家可以做個試驗 ,在自己的機器上把mdb改成asa或者asp 然后用任何一種下載工具下載,下載之后再把文件名改成.mdb 文件照樣可以用!道理很簡單!iis只執行<% %>內的內容,而mdb文件單純的修改擴展名只會讓iis錯誤的以txt方式顯示出來

你可以看見,如果在瀏覽器執行***.asp(注意:這個是mdb數據庫)就會看見一大堆亂碼,和你用記事本打開看見的一樣!

防止數據庫被下載的方法就有4種
1:在數據庫新建一個表,表名為<%safe就可以了 ,這樣iis在解析的時候會出現500錯誤,數據庫也就下載不了了!

2:在你的數據庫文件名后門加上# (不是擴展名,比如name#.mdb)這樣iis就以為你是在請求該目錄中默認的文件名,比如index.asp,如果iis找不到就會發出403禁止瀏覽目錄的錯誤警告!

3:在iis中是把數據庫所在的目錄設為不可讀,這樣就可以防止被下載!請放心,這樣做不會影響asp程序的正常使用??!

4:直接使用數據源 (ODBC)這樣數據庫就可以不用在web目錄里面,從而徹底防止被下載,但是這樣做你必須擁有服務器的管理員權限,哈哈,大部分虛擬主機用戶是不可能用數據源 (ODBC)的!

查看完整回答
反對 回復 2019-04-13
?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

現在假設在數據庫中保存的是你所想要的圖形格式
(GIF, JPEG, BMP, TIFF, 等)現在來看看要怎么把它們從
數據庫中讀出來。

在ACCESS中使用了兩個關鍵的技術來保存圖形
1。使用了bmp格式
2。78個字節的文件頭

<%
response.Expires = 0
response.Buffer = True
response.Clear
response.contentType = "image/bmp"
%>
接著你要干的就是去掉那78個字節的OLE對象的文件頭。
<%
Const OLEHEADERSIZE = 78
nFieldSize = rs("photo").ActualSize
oleHeader = rs("photo").GetChunk(OLEHEADERSIZE)
imageBytes = rs("photo").GetChunk(nFieldSize - OLEHEADERSIZE)
Response.BinaryWrite imageBytes
%>

現在舉一個例子:
如果你要得到一個職工的信息,這段信息包括一個介紹和他的圖象。
并且要同時顯示文字和圖形。
代碼如下:(其中的theImg是一個代理頁面)
theImg.asp
<%
response.Expires = 0
response.Buffer = True
response.Clear
response.contentType = Session("ImageType")
response.BinaryWrite Session("ImageBytes")
Session("ImageType") = ""
Session("ImageBytes") = ""
response.End
%>

Function SetImageForDisplay(field, contentType)
OLEHEADERSIZE = 78
contentType = LCase(contentType)
select case contentType
case "gif", "jpeg", "bmp"
contentType = "image/" & contentType
bytes = field.value
case "ole"
contentType = "image/bmp"
nFieldSize = field.ActualSize
oleHeader = field.GetChunk(OLEHEADERSIZE)
bytes = field.GetChunk(nFieldSize - OLEHEADERSIZE)
end select
Session("imageBytes") = bytes
Session("imageType") = contentType
End Function
'注意的是,程序中只使用了4中格式:gif, jpeg, bmp , ole .

<%
sql = "select * from Employees"
Set oRS = Server.CreateObject("ADODB.Recordset")
oRS.CursorLocation = 3
oRS.Open sql, "DSN=NW"
SetImageForDisplay oRS("photo"), "ole"
Set oRS.ActiveConnection = Nothing
%>

要顯示圖象的話,只需要在另外一個asp中,假設為getEmpInfo.asp中
<img src="theImg.asp"</img>
但這還有一個問題,因為對每個職工的圖形都使用了同一個"theImg.asp"
文件,應該再小小修改一下:
<img src="theImg.asp?temp=<%= Request.Form("empLastName")%>"</img>

最后再說一點,如何顯示多幅圖象呢?
也就是說如果數據庫中有多個字段都保存了圖形,怎么辦?
其實解決辦法很簡單,只要給SetImageForDisplay多加一個參數
就是用來保存圖形的一個session變量。
例如:
SetImageForDisplay oRS1("photo"), "ole", "empPhoto"
SetImageForDisplay oRS2("logo"), "gif", "compLogo"

<img src="theImg2.asp?varName=empPhoto&temp=<%= Request.Form("empLastName")%>">
<img src="theImg2.asp?varName=compLogo&temp=<%= Request.Form("imgCode")%>">

使用這個方法能夠完成下面的功能:
1。能夠從數據庫中取出圖形字段。(你唯一需要知道的是數據庫中的圖形是什么格式
bmp?gif?jpeg?ole?)
2.采用session變量 來保存圖形的字節數和content type
asp需要這些信息來聯結到<IMG>中的屬性
3。只要把theImg放到你想顯示圖形的地方,就能夠顯示圖象了



查看完整回答
反對 回復 2019-04-13
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

access數據表,在所對應的時間字段里,把類型設為日期/時間,格式選擇你想要的格式就可以了,在顯示的時候自動就會變成你設置的格式。

查看完整回答
反對 回復 2019-04-13
  • 3 回答
  • 0 關注
  • 878 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號