求解一个让抓狂的问题
有个防注入程序
dim dbkillSql,killSqlconn,connkillSql
dbkillSql="SqlIn.mdb"
'On Error Resume Next
Set killSqlconn = Server.CreateObject("ADODB.Connection")
connkillSql="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbkillSql)
killSqlconn.Open connkillSql
Response.Write(Server.MapPath(dbkillSql)&"<br>")
set rs22info=killSqlconn.execute("select N_In,Kill_IP,WriteSql,alert_url,alert_info,kill_info,N_type,Sec_Forms,Sec_Form_open from config")
Redim ApplicationValue(9)
for i=0 to 8
config(i)=rs22info(i)
next
For i=lBound(config) To Ubound(config)
Response.Write(config(i)&"<br>")
Next
数据库截图
可是在程序中指定的数据库中却没有发现这个表 程序依然不报错并且还显示出数据了 怎么回事
------解决方案--------------------Access数据库中隐藏的表
在ACCES中隐藏表:如果你想在数据库窗口中隐藏你不想让其它用户选择的表,你可以在前面加上前缀'Usys'。例如,如果你的表名为:Employee,将它改名为:UsysEmployee,这将使你的表加入到系统对象中,这样ACCESS就不会显示它。
如果以后要看这个表,可以通过选择菜单--工具--选项--视图中勾选“系统对象”来在数据库窗口中操作该表。
法一:
(已测试)
如果你想在数据库窗口中隐藏你不想让其它用户选择的表,你可以在前面加上前缀'Usys'。例如,如果你的表名为:Employee,将它改名为:UsysEmployee,这将使你的表加入到系统对象中,这样ACCESS就不会显示它。如果以后要看这个表,可以通过选择菜单--工具--选项--视图中勾选“系统对象”来在数据库窗口中操作该表。
法二:
~TMPCLP
可以隐藏这个表,用查看系统或隐藏对象也无法看到,但可以在MSysObjects这个表中查得。
在关闭数据库或压缩数据库后,该表不会消失。
另外手工删除表时,系统也会自动命名这个为 ~TMPCLPXXXXXX,不过和手工改表名称不同,被删除的表在MSysObjects的 Flags 字段值为4097,在关闭数据库或压缩数据库后,该表将消失。
今天在看一套asp系统,分析代码的时候,打开数据库发现只有一张notdown的表,可是网页正常显示.内容也对,都是从数据库出来的.奇怪了,怎么看不到表?于是查看了下access帮助手册,发现原来Access2000还可以这样玩.由于Access默认是不显示系统对象和隐藏对象的.所以如果一个表中存在隐藏对象或者系统对象那么就无法看到表了.
这里简单说下隐藏方法,设计好表后右击表选择"属性"->"隐藏"属性打勾,刷新下就看不到了,这样就是隐藏对象了,默认是看不到的.至于系统对象,我们可以修改表的前缀为 usys,这样就可以把表改成一个系统对象.这2种方法都可以.作为程序员可以考虑这点,隐藏关键表,也许可能蒙过一些新手.不过这种治标不治本,可以考虑加密.
至于作为安全爱好者,遇到这种问题就会纳闷,其实也不难.要访问这些只要按如下操作:“工具”菜单->“选项”命令->“视图”选项卡->选中“显示”一栏下的“系统对象”复选框或者"隐藏对象"复选框,并按下“确定”按钮,就可以重新显示这个表了,完成了....
http://www.cnblogs.com/Athrun/archive/2011/08/26/2154117.html