我想知道是否有人可以创建一个自动化脚本,将某种类型的随机表单数据发送到我的PHP脚本中,该脚本只是将接收到的表单数据插入到MySQL数据库中?数据会被插入吗?我们如何保护它?
示例:我有一个example.com/signup.php脚本,它将接收到的表单数据插入到MySQL数据库中。是否有人可以从不同的主机(例如localhost或domain-name.com )将表单数据发送到example.com/signup.php脚本?
例如,是否有人可以像下面这样创建一些代码,并继续在http://www.domain-name.com/signup.php上插入数据,而不是在http://www.example.com/signup.php上插入数据?当提交时,插入的数据会被插入到数据库中吗?
<form action="http://www.example.com/signup.php">
<input type="text" name="username" placeholder="Username">
<input type="password" name="password" placeholder="Password">
<button type="submit" name="signup-btn">Signup!</button>
</form>因此,如果有机器人执行此操作,数据库可能会变满。
发布于 2019-10-16 20:35:16
我是stackoverflow的新手,我对stackoverflow编辑器不是很熟悉。
您可以在表单中设置特定的令牌
首先在表单页面上设置令牌会话
<?php
session_start();
$token = rand();
$_SESSION['token'] = $token;
?>
<html>
<body>
<form action="http://www.example.com/signup.php">
<input type="hidden" name="token" value="<?php echo $_SESSION['token'] ?>">
<input type="text" name="username" placeholder="Username">
<input type="password" name="password" placeholder="Password">
<button type="submit" name="signup-btn">Signup!</button>
</form>
</body>
</html>
signup.php
<?php
session_start();
if(isset($_POST['token']) && $_POST['token'] == $_SESSION['token'])
{
//piece of codes to insert into database
}
else{
echo "<script>window.location = 'example.com'</script>";
}
?>
https://stackoverflow.com/questions/56755587
复制相似问题