这个网络解决方案已经采取措施,达到了既保护自身又保护客户的目的。WHOIS data on Network Solutions' site.公司已经开发出了一个可以防范竞争对手的系统。此系统包括一个密码,此密码是以图像的形式提供给用户,同时办有背景噪声,用来防止光学字符识别机器(OCR)。这种方式也是目前非常流行的,然而它并非十全十美。
如果你检测网络解决方案WHOIS的搜索工具,你就会注意到视力障碍的用户必须紧跟一个引导他们拨打一个号码的链接。这个链接使得网站能被访问,但是网站就不再能完成提供此项服务给用户的任务。另外一种可能的方法就是有视力障碍的用户能够听得见密码,这样他们就能进入可应用领域。这种方法实现的可能就是通过引导浏览器到网页,或CGI脚本,而这个脚本将会通过缝合几个独立的声音字节来建立一个声音字节,以此来完成此项任务。声音字节的文件的格式将会影响进程,因为你是通过这个进程来组合各个独立的声音字节。
我将要使用Microsoft's PCM WAV的文件格式。你能在这里找到这种格式的规格。因为这种专为独立声音字节的格式将会是相容的,那么我只需要做的就是在文件的标题上调整文件的大小,和附件原始数据到已在的数据。一旦我改变了反应器的MIME种类,发送了数据,用户将会听到密码的读音。
低层次的文件I/O通常是用在大多数编程和脚本语言上。对于我来说,我将会用Visual Basic建立COM部件。这种部件将会开发出一种方法,就是将会收到一连串的文件字串,并且以二元的字流返回声音字节。这里就是它的密码:
'Class Module
Option Explicit
Option Base 0
Dim fso As Scripting.FileSystemObject
Dim f As Scripting.File
Dim adoStream As ADODB.Stream
Public Type FILESTRUCT
ChunkID(3) As Byte
ChunkSize(3) As Byte
缝合文件方法收到一连串的文件路径字符串。他使用字符串的每个因素加载独立的声音文件。他也能够解析每个声音文件,计算出整个原始数据的整个长度,通过增加每个文件的原始数据的长度-- Subchunk2Size。接着,文件头被创建,附加到字流上。声音文件的格式部分,比如样本率,都是连续的。我使用的声音文件是以44,100赫兹和16位立体声录制的。最终,原始数据的串联附加到字流中,字流被返回。
GetPasscodeSoundByte()的方法收到密码串。他把密码串分成一列,使用每一列中的因素加载独立声音文件。接着,输出文件头被创建。每个文件的原始数据部分的长度被附加到一起得到文件的整个字节。声音文件的其它部分,比如格式,都是连续的。最后,原始数据的串联附加到节流中,节流被返回。
因为我们不想要泄露密码,当浏览器要求声音字节的时候,一个密钥能够取回密码。为了简单起见,我假定密钥被创建和储存在一个变量上。接着我创建我的部件的一个实例,重新找回声音字节流。字节流的内容接着被发送回反应器。
Dim WAVStitch, adoStream, files, f
Set WAVStitch = Server.CreateObject("WAVStitch.Stitcher")
files = Split(Session(Unescape(Request.QueryString("key"))), ",")
For f = LBound(files) To UBound(files)
files(f) = Server.MapPath(files(f)
& ".wav")
Next
Set adoStream = WAVStitch.StitchFiles(files)
Response.ContentType = "audio/x-wav"
Response.AddHeader "Content-Disposition",
"attachment;filename=passcode.wav"
adoStream.Position = 0
Response.BinaryWriteadoStream.Read(-1)
Set adoStream = Nothing
Set WAVStitch = Nothing
这里就是请求页面,所以你能够他们的创建关系。
. . .
<%
Dim typelib, guid
Set typelib = Server.CreateObject("Scriptlet.TypeLib")
guid = typelib.GUID
Session(guid) =
"a,b,c,1,2,3" 'This would be an auto process that creates a
random passcode
Set typelib = Nothing
%>
. . .
<script language="JavaScript">
function play_soundbyte() {
bgsound1.src = "get_soundbyte.asp?key=<%=Escape(guid)%>";
}
</script>
. . .
<bgsound id="bgsound1"
loop="1">
. . .
<a href="javascript:play_soundbyte();">Click here to play soundbyte.</a>
一旦您增加这些到您的IE网页中,你就会得到一个视力障碍用户也能访问的网页。另外,这种保护您的知识产权的安全性是无懈可击的。对于Netscape网页,您需要使用<EMBED>标签和它的联合功能。
这种不能作为安全性能的百分之百的解决方案。它的主要目的是阻止那些知识产权的剽窃者剽窃网站数据。雇佣某些人去剽窃数据的费用或是开发一种自动操作进程的解决方案的费用都是不相上下的,它们都是过于昂贵,以至于不得不考虑成本效益。