我花了4个小时试图弄清楚以下代码中发生了什么。我很难理解,因为我还没有编写Javascript。
使用Javascript:
function pincheck() {
var n = 123456789123,
t = md5(n + " " + $("#wert").val()),
e = $("input[name='some_hash']").val();
$.post("https://url-test.com/site?check=" + t, {some_hash: e}, function(n) {
$("#inputWert").html(n == t ? "<span style='color:green; font-weight:bold'>OK</span>"
: "<span style='color:red; font-weight:bold'>NOT OK</span>")
})
}
对应的HTML表单:
<form action="https://url-test.com/site" method="post" accept-charset="utf-8">
<div style="display:none">
<input type="hidden" name="some_hash" value="2cb6beab7ac4240043b20674a3dce6a5" />
</div>
<input type="text" id="wert" name="wert" placeholder="WERT" onchange="pincheck()">
<div id="inputWert">Please input</div>
<input type="submit" value="Submit" />
<h2>Please explain<br/><textarea name="explain" style="width: 650px;height: 100px;" placeholder="Explanation"></textarea><br/>
</form>
我的想法是:
我的问题的背景是指我们的大学IT安全任务。我们必须猜出一些数字,然后将其输入文本形式,我想这应该是“wert”。
我希望有人可以帮助我。提前谢谢!
答案 0 :(得分:2)
当用户在WERT
输入字段中输入内容时,Javascript接受用户的输入,将123456789123
放在其开头,计算此MD5哈希,并分配那到t
。 e
设置为隐藏some_hash
值的内容。
然后它执行AJAX查询,将t
和e
发送到url-test.com/site
脚本。 t
网址参数中会发送check
,而e
POST数据中会发送some_hash
。
服务器脚本返回一个字符串。如果该字符串与t
匹配,则会显示绿色OK
。如果他们不匹配,则会显示红色NOT OK
。
我的猜测是这是CAPTCHA测试的一部分。隐藏输入是指示显示哪个图像的代码。在服务器上,此代码可用于查找图像中文本的MD5哈希值。
答案 1 :(得分:0)
简单地说,Javascript设置3个变量(使用var关键字),然后使用jquery进行HTTPS POST调用。
逐行说明这样的代码:
// Set n to a seemingly arbitrary number
var n = 123456789123;
// Set t to an MD5 hash using n and whatever the value of the "wert" element is
var t = md5(n + " " + $("#wert").val());
// Set e to the value of the element with a name of "some_hash"
var e = $("input[name='some_hash']").val();
// Makes a POST call to a URL built using the above variables
// Format $.post(URL, data(in JSON format), callback function)
$.post(
"https://url-test.com/site?check=" + t,
{some_hash: e},
function(n) {
// Set the HTML body of the "wert" element
// If n (returned by the POST call) is equal to t, set font color to green, otherwise set font color to red
$("#inputWert").html(n == t ? "<span style='color:green; font-weight:bold'>OK</span>" :
"<span style='color:red; font-weight:bold'>NOT OK</span>")
}
);
答案 2 :(得分:0)
让我们把你的代码分块:“pincheck”函数从设置三个变量开始:n(123456789123),t。它使用javascript MD5哈希函数,初始字符串为n +一些空格+您在表单上的“wert”字段中输入的任何值。最后,您检索名为“some_hash”的隐藏字段的值并将其存储在变量“e”/
中然后您向服务器发送一个帖子,传递一个键值对“some_hash”(键)和隐藏字段的值。
当post返回时,它调用post语句末尾的匿名函数,将post操作的返回值作为(本地到匿名函数)变量“n”传递。该“n”是与在检查功能开启时定义的变量不同的变量。
然后,匿名函数检查以查看从post操作返回的值是否与使用javascript MD5函数计算的值相同。如果它们相同,则显示第一个span标记,如果它们不相等,则显示第二个span标记。
希望这会有所帮助。