角路由-URL注入安全性问题:redirectTo''和'/'有什么区别?

时间:2019-10-17 22:11:28

标签: angular security google-search-console

Google Search Console说公共网站受到黑客攻击。该网站是用Angular 8.2.x编写的。遭入侵的类型:URL注入(https://support.google.com/webmasters/answer/3311329?hl=en)。

在警告下标记URL-s

这很有趣,因为服务器上根本没有任何PHP源。我开始调试...我打开了示例URL之一。发生以下情况:网站正在加载,我看到内容已呈现(主页),但是URL发生了更改,并将我从中重定向

https://example.com/wiki.php?2687fiugf121ce0u1k43m_8

https://example.com/?2687fiugf121ce0u1k43m_8=

它切断了URL的某些部分。有趣,因为如果找不到路由,我希望Angular路由会将我重定向到https://example.com

当前路线对象:

const routes: Routes = [
  {
    path: '',
    component: HomeComponent,
  },
  {
    path: '**',
    redirectTo: ''
  }
];

我也在localhost中尝试了同样的方法,发生了同样的事情。

如果我将redirectTo值从空字符串更改为'/',则它将重定向到预期的路由(https://example.com)。

有人知道后台发生了什么(关于此URL注入问题),redirectTo: ''redirectTo: '/'有什么区别?这似乎是我的错,还是Angular中的错误?

1 个答案:

答案 0 :(得分:0)

如果您使用以“ /”开头的路由,则路由器会认为该路由是绝对的。路由器从应用程序的根目录开始搜索。

如果您使用路由“(不带斜杠),则路由器会认为该路由是相对的。相对于当前活动路由(重定向之前)

有关此的更多信息:https://angular.io/guide/router#relative-navigation

希望有帮助!