use*_*378 2 php security xss get
使用$ _GET来更新/删除MySQL表中的数据是不安全的?
我不能使用$ _POST,因为它需要使用<form>标签
例如:
<a href="status.php?approve='123'>Unapprove</a>
<?php
if (isLoggedIn() && groupId() == 2) {
if (isset($_GET['id']) && is_numeric($_GET['id']) {
$query = $db->prepare("UPDATE table set unapprove='1' where id = :id");
$query->bindParam(':id', $_GET['id'], PDO::PARAM_STR);
$query->execute();
}
}
?>
Run Code Online (Sandbox Code Playgroud)
请举例说明如何保护我的示例或更好的方法.
虽然不受SQL注入的影响,但您所做的事情并不安全,因为需要伪造跨站点请求.
考虑登录到您的网站的效果,并访问具有此图像的另一个:
<img src="yoursite.com/admin/status.php?approve=123" />
Run Code Online (Sandbox Code Playgroud)
理想情况下,始终对非幂等请求使用POST.
无论如何,您需要添加一个特定于会话和链接的秘密令牌:
href="status.php?approve=123&token=[random_stuff]"
Run Code Online (Sandbox Code Playgroud)
顺便说一句,'123'链接应该是123.
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |