安全中国首页 > 文章中心 > 黑客编程
 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:www.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 

安全脚本程序的编写技术

更新时间:2008-7-4 0:14:18
责任编辑:流火
热 点:
基本思路:
    为没一个功能写一个独立的程序,程序页尽可能少的让客户了解你的服务器端信息不要用"客户应该这么写"这个思路想问题尽可能多的想到不可能发生的事情。

    1.关于交互式动态网页可能存在的问题
    1.1 form类型的交互
    1.1.1 概念介绍
    在我们和浏览者进行交互时,最常用到的就是form(post/get/put方法),虽然非常方便,但是很多问题也是因他而起。 

    form表单中input标志用来接受用户输入的信息,例如:用户名、密码、email等。如果你没有对用户输入进行很好的检查的话,一个恶意的用户会屏蔽掉一些安全机制,绕过安全认证。例如,输入标准的HTML语句或者javascript语句会改变输出结果 ,在输入框中打入标准的HTML语句会得到什么样的结果呢?比如一个留言本,我们留言内容中打入:<font size=10>你好!</font>  如果你的程序中没有屏蔽html语句,那么就会改变"你好"字体的大小。在留言本中改变字体大小和贴图有时并不是什么坏事,反而可以使留言本生动。但是如果在输入框中写个 javascript 的死循环,比如:<a herf="http://someurl" onMouseover="while(1) {window.close(’/’)}">第一万个惊心动魄</a> 那么其他查看该留言的客人只要移动鼠标到"第一万个惊心动魄",上就会使用户的浏览器因死循环而死掉。
1.1.2 防范要点
(1)对特殊字符进行过滤

([\&;\`’\\\|"*?~<>^\(\)\[\]\{\}\$\n\r])/\\$1/g;),这个是最基本的,在很多地方也已经不只一次提到过
<script language="vbscript">
sub uBotton_onclick
if form1.uUserName.value=""then
msgbox"您的姓名不能为空!",0+32,"哦!还不行"
form1.uUserName.focus
exit sub
end if

if form1.uPassword.value=""then
msgbox"您的密码不能为空!",0+32,"哦!还不行"
form1.uPassword.focus
exit sub
end if

if form1.uUserName.value=""then
msgbox"您的姓名不能为空!",0+32,"哦!还不行"
form1.uUserName.focus
exit sub
end if
form1.submit
end sub
</script>


function isEmpty(objname)
{
var str = document.inputform[objname].value
var tmpstr = str.replace([\&;\`’\\\|"*?~<>^\(\)\[\]\{\}\$\n\r])/\\$1/g;,"")
var tmpstr = tmpstr.replace([\&;\`’\\\|"*?~<>^\(\)\[\]\{\}\$\n\r])/\\$1/g;,"")
return (tmpstr.length==0)
}

function check()
{
tf=document.inputform
errors=""
if (isEmpty("username")) errors += "用户名不能为空。\n";
if (isEmpty("password")) errors += "密码不能为空!\n"
if (errors!="")
alert(errors);
return (errors=="")

(2) 对输入的字符长度进行限制
(3) 进行尽可能多的错误出理和错误陷阱
(4) 尽可能多的使用以下这些标志,减少用户输入的机会
<input type="checkbox" name="checkbox" value="checkbox">
<select name="select"> </select>
<input type="radio" name="radiobutton" value="radiobutton">

1 2 3 4 5 下一页

 
相关文章
一日一文章
 
一日一软件
一日一动画