请注意,这个问题是关于计算机安全和跨站点请求伪造的主题,除了了解这些主题之外,我没有任何意图。
假设用户在dasak.csc.kth.se/zoobar上有当前会话,我将打算使用此代码:
我希望通过以下方式在我的文档中完成:
这是HTML文档:
<form method="POST" name="transferform"
action="http://dasak.csc.kth.se/zoobar/transfer.php">
<p>Send <input name=zoobars type=text value="1" size=5> </p>
<p>to <input name=recipient type=text value="sahand" size=10></p>
<input type=submit name=submission value="Send">
</form>
<script>
document.transferform.submit()
</script>
当我打开此文档时会发生的情况是我被重定向到http://dasak.csc.kth.se/zoobar/transfer.php,并且表单中填入了我在HTML文档中提供的值。据我所知,由于用户的动作标量不变,因此未进行任何转移。
那么,我问的是,如何才能获得此文档以实现所需的功能?
编辑:transfer.php的PHP代码:
<?php
require_once("includes/common.php");
nav_start_outer("Transfer");
nav_start_inner();
if($_POST['submission']) {
$recipient = $_POST['recipient'];
$zoobars = (int) $_POST['zoobars'];
$sql = "SELECT Zoobars FROM Person WHERE Username='" .
addslashes($user->username) . "'";
$rs = $db->executeQuery($sql);
$sender_balance = $rs->getValueByNr(0,0) - $zoobars;
$sql = "SELECT Username, Zoobars FROM Person WHERE Username='" .
addslashes($recipient) . "'";
$rs = $db->executeQuery($sql);
$recipient_exists = $rs->getValueByNr(0,0);
if($zoobars > 0 && $sender_balance >= 0 && $recipient_exists) {
$sql = "UPDATE Person SET Zoobars = $sender_balance " .
"WHERE Username='" . addslashes($user->username) . "'";
$db->executeQuery($sql);
$sql = "SELECT Zoobars FROM Person WHERE Username='".
addslashes($recipient) . "'";
$rs = $db->executeQuery($sql);
$recipient_balance = $rs->getValueByNr(0,0) + $zoobars;
$sql = "UPDATE Person SET Zoobars = $recipient_balance " .
"WHERE Username='" . addslashes($recipient) . "'";
$db->executeQuery($sql);
$result = "Sent $zoobars zoobars";
}
else $result = "Transfer to $recipient failed.";
}
?>
答案 0 :(得分:0)
if($_POST['submission']) {
表单测试是否有一个名为&#34; submission&#34;在您发送到页面的数据中。
<input type=submit name=submission value="Send">
使用该名称的唯一控件是提交按钮。
如果您使用它提交表单,那么它将是一个成功的控件并包含在表单数据中。
document.transferform.submit()
您没有使用提交按钮提交表单。
因此,它不是一个成功的控制,并且不包含在数据中。
所以你必须:
答案 1 :(得分:0)
document.getElementsByName("submission")[0].click()
完成了这个。这样做了。所以最终的HTML文档如下所示:
<form method="POST" name="transferform"
action="http://dasak.csc.kth.se/zoobar/transfer.php">
<p>Send <input name="zoobars" type=text value="1" size=5> </p>
<p>to <input name="recipient" type=text value="sahand" size=10></p>
<input type=submit name="submission" value="Send">
</form>
<script>
document.getElementsByName("submission")[0].click()
</script>