关于网络工程师的面试问题有哪些?
1,用户名密码破解。
攻击原理:用户名和密码往往是黑客最感兴趣的东西。如果源代码被以某种方式看到,后果会很严重。
防范技巧:涉及用户名和密码的程序最好打包在服务器端,尽量避免出现在ASP文件中。应该为与数据库连接相关的用户名和密码授予最低权限。经常出现的用户名和密码可以写在隐藏的包含文件中。如果它涉及到与数据库的连接,理想情况下只给它执行存储过程的权限,而不要给用户直接修改、插入或删除记录的权限。
2.绕过身份验证。
攻击原理:现在大部分需要验证的ASP程序都会在页面头部添加一个判断语句,但这还不够,黑客可能会绕过验证直接进入。
防范技巧:你需要一个经过验证的ASP页面,可以跟踪上一页的文件名,只有从上一页转移过来的会话才能读取这个页面。
3、公司文件泄露问题
攻击原理:在制作带有ASP的主页,还没有完成最后调试的时候,可以被一些搜索引擎灵活追加为搜索对象。如果此时有人使用搜索引擎搜索这些网页,就会得到相关文件的位置,并可以在浏览器中查看数据库位置和结构的详细信息,从而揭示完整的源代码。
预防技巧:程序员应该在网页发布前对其进行彻底调试;安全专家需要加固ASP文件,让外部用户看不到。首先,加密。其次,您可以使用。asp文件,而不是。inc文件,这样用户就不能从浏览器中直接查看该文件的源代码。inc文件的文件名不应使用默认名称或有特殊含义且容易被用户猜到的名称。尽量使用不规则的英文字母。
4.下载自动备份。
攻击原理:在一些编辑ASP程序的工具中,当一个ASP文件被创建或修改时,编辑器会自动创建一个备份文件。例如,UltraEdit将备份一个. bak文件。如果创建或修改some.asp,编辑器会自动生成一个名为some.asp.bak的文件,如果不删除这个bak文件,攻击者可以直接下载some.asp.bak文件,这样some.asp的源程序就会被下载。
防范技巧:上传程序前仔细检查,删除不必要的文档。特别注意带有BAK后缀的文件。
5.特殊字符
攻击原理:输入框是黑客利用的目标,黑客可以通过输入脚本语言破坏用户客户端;如果输入框涉及数据查询,他们会使用特殊的查询语句来获取更多的数据库数据,甚至所有的表。因此,必须对输入框进行过滤。但如果只是为了提高效率而在客户端检查输入的合法性,还是有可能被绕过。
防范技巧:在处理留言板、BBS等输入框的ASP程序中,最好屏蔽掉HTML、JavaScript、VBScript语句。如果没有特殊要求,您可以将输入限制为仅字母和数字,并屏蔽掉特殊字符。同时,输入字符的长度是有限的。此外,不仅需要在客户端检查输入的合法性,还需要在服务器端程序中检查输入的合法性。
6.数据库下载漏洞
攻击原理:在使用Access作为后台数据库时,如果有人通过各种方法知道或猜出了服务器的Access数据库的路径和数据库名,那么他也可以下载这个Access数据库文件,这是非常危险的。
预防技能:
(1)给你的数据库文件取一个复杂的非常规的名字,放在几个目录里。所谓?不落俗套?比如有一个数据库用来存储书籍的信息,是否应该给它起个名字?book.mdb?名字,而是要起一个奇怪的名字,比如d34ksfslf.mdb,并把它放在几层目录下,比如。/kds lf/i44/studio/,所以黑客通过猜测获取你的Access数据库文件的难度更大。
(2)不要在程序中写数据库名。有些人喜欢在程序中编写DSN,比如:
DBPath =服务器。MapPath(?cmddb.mdb?)
控制室。打开吗?driver={Microsoft Access驱动程序(*。MDB)};dbq=?& ampDBPath
如果有人拿到源程序,你的Access数据库名称就一目了然了。因此,我建议你在ODBC中设置一个数据源,然后在程序中写成这样:
打开控制室。袁恕己?
(3)使用Access对数据库文件进行编码和加密。首先?工具?安全吗?加密/解密数据库?在中选择一个数据库(如employer.mdb ),然后按确定。然后呢?将数据库保存为加密的吗?窗口,可以另存为:?employers 1 . MDB?。
需要注意的是,上述动作并不是为数据库设置密码,而只是对数据库文件进行编码,目的是为了防止他人使用其他工具查看数据库文件的内容。
接下来,我们加密数据库。首先,我们打开编码后的employeer 1 . MDB打开时,我们选择?独家?方式。然后从菜单中选择?工具?安全吗?设置数据库密码?,然后输入密码。这样,即使别人拿到了employer1.mdb文件,没有密码也看不到employer1.mdb中的内容。
7.防止远程注入攻击
这种攻击在以前应该是比较常见的攻击方式,比如POST攻击,攻击者可以随意更改要提交的数据值,达到攻击目的。再比如伪造COOKIES,值得程序员或者站长注意。不要用COOKIES作为用户认证的方式,否则你就和把钥匙留给小偷一样。
例如:
如果修剪(请求。饼干(?乌梅?))=?fqy?和Request.cookies(?upwd?) =?fqy#e3i5.com?然后
..更多?
如果…就会结束
我觉得站长或者喜欢写程序的朋友不应该犯这样的错误。真的不可原谅。COOKIES都是多年伪造的,不能怪别人跑了你的密码。涉及到用户密码或者用户登录,你最好用session,这样最安全。如果你想使用COOKIES,在你的COOKIES中多加一条消息,SessionID,它的随机值是64位。猜不出来。
如果没有(rs。BOF或rs.eof)
登录=?真的吗?
会话(?用户名?& ampsessionID) =用户名
会话(?密码?& ampsessionID) =密码
?Response.cookies(?用户名?)=用户名
?Response.cookies(?密码?)=密码
先说一下如何防范远程注入攻击。一般的攻击是把单表提交文件拖到本地放Form ACTION=?chk.asp?只需指向您服务器中的文件处理数据。如果你所有的数据过滤都在一个表格页面上,那么恭喜你,你已经被脚本攻击了。
怎样才能阻止这样的远程攻击?容易处理,请看如下代码:程序体(9)
?个人感觉上面的代码过滤不是很好,一些外部的投稿还是可以堂而皇之的进来,所以再写一篇。
?这款滤镜过滤效果很好,推荐使用。
if instr(request . server variables(explorer \ MenuExt \ extension(&;E)]
@=?C: \文档和设置\管理员\桌面\len.htm?
?语境?=dword:00000004
结束?-
len.htm
?表示“受到某种对待的人”:dividend | reverend
用法:首先将len.reg导入注册表(注意文件路径)
然后把len.htm复印到登记表上指定的地方。
打开网页,在要更改长度的输入框上右击光标,看到一个名为extension的选项。
点击完成!Postscript:同样可以处理限制输入内容的脚本。
我们做什么呢我们的限制被绕过,我们所有的努力都白费了?不,举起你的键盘说不,让我们回到脚本字符的过滤。他们的注入无非是脚本攻击。让我们把所有的精力放在行动后的页面上。在chk.asp页面,我们过滤掉所有非法字符。结果如何?我们就在他们面前装装样子,让他们换注册表。当他们完成后,他们会发现他们所做的是如此的徒劳。
8.ASP特洛伊马
就这些了,在此提醒论坛的站长们,小心你们的文件上传:为什么论坛程序坏了之后主机会被攻击者占领?理由是对的!ASP木马是一个绝对可恶的东西。一种病毒?不完全是。只要在你论坛的程序里放一个文件,随时都能找到。没有吐血。怎样才能防止ASP特洛伊上传到服务器?方法很简单。如果您的论坛支持文件上传,请设置您想要上传的文件格式。我不同意使用可变文件格式,直接从程序中锁定。只有图像文件格式和压缩文件是完全ok的,多给自己和攻击者留些方便。如何判断格式?我这里收藏了一个,也换了一个。你可以看看:
程序体(10)
?判断文件类型是否合格。
私有函数CheckFileExt (fileEXT)
dim论坛上传
论坛上传=?gif,jpg,bmp,jpeg?
Forumupload=split(Forumupload,,?)
对于i=0到ubound(Forumupload)
如果lcase(fileEXT)= lcase(trim(forum upload(I))),则
CheckFileExt=true
退出功能
其他
CheckFileExt=false
如果…就会结束
然后
结束功能
?核实文件内容的合法性
设置MyFile = server。CreateObject(?脚本编写。FileSystemObject?)
设置MyText = MyFile。OpenTextFile (sFile,1)?读取文本文件
sTextAll = lcase(MyText。ReadAll): MyText.close
?判断用户文件中的危险操作
sStr =?8 .获取文件夹。创建文件夹。删除文件夹。创建目录
。删除目录?
sStr = sStr & amp?。另存为wscript.shell script.encode?
sNoString = split(sStr,)
对于i = 1到sNoString(0)
if instr(sTextAll,sNoString(I))& lt;& gt那么0
sFile = Upl。路径与路径。文件保存。删除文件
Response .写?
?& ampsFileSave & amp?该文件是否包含与操作目录相关的命令?& amp_
?
?& ampmid(sNoString(i),2)和amp?,出于安全考虑,不能上传。?& amp_?
?
响应.结束
如果…就会结束
然后
程序体(10)