0

我已成功发送包含来自 amp-email 的数据的表单,但存在安全问题。
黑客可以拦截用户通过 amp-email 中的表单发送的数据吗?如果可以,概率是多少,做起来有多容易。

4

1 回答 1

0
  • 黑客可以在 chrome devTools 中查看您从电子邮件到后端 API 的请求。
  • 解释示例:

假设我们的网站有一个页面显示单个城市的天气观测历史。这个城市的 ID 是通过请求参数中的链接传递的:/weather.php?city_id=<ID>,其中ID- 是城市的主键。在 PHP 脚本中,我们使用此参数在 SQL 查询中进行替换:

$city_id = $_GET['city_id'];
$res = mysqli_query($link, "SELECT * FROM weather_log WHERE city_id = " . $city_id);

如果服务器传递的 city_id 参数等于 10 /weather.php?city_id=10,则执行 SQL 查询:

SELECT * FROM weather_log WHERE city_id = 10

但是如果攻击者将字符串-1 OR 1=1作为 id 参数传递,请求就会被执行:

SELECT * FROM weather_log WHERE city_id = -1 OR 1=1

将 SQL 语言结构添加到输入参数(而不是简单的值)会改变整个 SQL 查询的执行逻辑!

在此示例中,将接收所有城市的数据,而不是显示一个城市的数据,因为表达式 1=1 始终为真。而不是SELECT ...表达式,可能是更新数据的表达式,那么后果会更加严重。

缺乏对 SQL 查询参数的正确处理是最严重的漏洞之一。永远不要“按原样”在 SQL 查询中插入来自用户的数据!

于 2020-05-31T11:50:50.970 回答