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