日期:2014-05-17  浏览次数:20756 次

请问下,这么写一个文件有没有安全问题
下面代码是我找的一个独立的func.asp文件,里面一个函数涉及到数据库访问,但是因为没有权限验证,不知道直接放在服务器里面有没有危险,烦请高手指教!



VB.NET code


<%
class cls_show
    Public Sub ShowPageInfo(table,id,condition,PageNo,PageSize,LinkFile)
        dim StrSql,TotalCount,TotalPageCount,OutStr
        StrSql="SELECT count("&id&") FROM "&table&" "&condition&""
        Set rs = hx.Execute(StrSql)
        TotalCount=rs(0)
        Set rs=Nothing

    '如果记录数为0,那么退出
    If TotalCount=0 Then
        Exit Sub
    End If
        OutStr="<P align=Center>"
    '如果记录数>MaxRecord,则记录数为MaxRecord
    if TotalCount>MaxRecord then
        OutStr = OutStr & Lang.item("g_022") & TotalCount & Lang.item("g_024") & " " & Lang.item("g_023") & MaxRecord & Lang.item("g_024")
        TotalCount=MaxRecord
    else
        OutStr = OutStr & Lang.item("g_022") & TotalCount & Lang.item("g_024")        
    end if
    '得到总页数
    If (TotalCount mod PageSize)=0 Then
        TotalPageCount=TotalCount\PageSize
    Else
        TotalPageCount=(TotalCount\PageSize)+1
    End If
    '防止提交的page参数大于第二次提交的总页数
    if PageNo>TotalPageCount then 
        PageNo=TotalPageCount
    End if
        OutStr = OutStr & "&nbsp;<font color='#FF0000'>"&PageNo&"</font>/<font color='#FF0000'>"&TotalPageCount&"</font>"
    If PageNo>1 Then
        OutStr = OutStr & "&nbsp;<a Href='?"&LinkFile&"&PageNo=1'>"& Lang.item("g_025") & "</a>"
        OutStr = OutStr & "&nbsp;<a Href='?"&LinkFile&"&PageNo="&PageNo-1&"'>"& Lang.item("g_026") & "</a>"
    End If
    If PageNo<TotalPageCount Then
        OutStr = OutStr & "&nbsp;<a Href='?"&LinkFile&"&PageNo="&PageNo+1&"'>"& Lang.item("g_027") & "</a>"
        OutStr = OutStr & "&nbsp;<a Href='?"&LinkFile&"&PageNo="&TotalPageCount&"'>"& Lang.item("g_028") & "</a>"
    End If
        OutStr = OutStr & "</P>"
        Response.Write(OutStr)    
    End Sub

End class
%>



------解决方案--------------------
目录有安全问题。
------解决方案--------------------
SQL语句是拼接的就可能会有SQL注入问题,尽量用参数化查询.

------解决方案--------------------
一个sql注入的安全,另外是服务器目录的安全性。
------解决方案--------------------
只是个类的话,可以这样写, 但是传参数的时候,参数要过滤。