-
-
Notifications
You must be signed in to change notification settings - Fork 10.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
覆盖了其他项目的配置项 #3334
Comments
版本信息提供一下?另外是否可以问下这位用户,他当时做了什么操作? |
apollo版本是1.6.1,由于是十多天后才发现这个问题,之前的操作日志都已经覆盖掉了,询问这位用户也只是说操作了自己这个项目的配置,另外那个项目他没有权限不可能去更改。 |
能否根据这个key查一下Item表中对应在app-a和app-b中的记录,然后根据ItemId查一下AUDIT表? |
这个前一段时间在 #3341 中修过一个可能存在问题的点,传入的 appId, cluster, namespace 和 item dto 的内容对不上,不过这个正常操作应该是不会产生的 |
This issue has been automatically marked as stale because it has not had activity in the last 90 days. It will be closed in 14 days unless it is tagged "help wanted" or other activity occurs. Thank you for your contributions. |
This issue has been automatically closed because it has not had activity in the last 7 days. If this issue is still valid, please ping a maintainer and ask them to label it as "help wanted". Thank you for your contributions. |
@nobodyiam 看来这个问题跨越的版本挺多的,1.5.1也有这个问题。#2592 这个issue估计也是相同的问题。 |
@huayaoyue6 可以升级到新版本 apollo 看下,#3341 防御性的修了下 |
这个问题估计是js的bug导致的。类似 #3196 这个问题。 db说明:
下面两个是根据数据反推出的结论: 不同环境切换的时候,不慎将正式的item的id提交的测试环境上了,即id是非当前环境的id。直接根据item的id更新,所以导致了此问题的发生。 #3341 这个pr加了对namespace的判断逻辑。应该会起作用。 你可以根据db的数据来检查一下上面的结论是否正确。
这些操作也都记录到了Commit表中。 如果你把db的数据跑一下,可能会发现这种情况已经发生多次:
|
我发现的原因是这样的: 实现的自定义登录的时候处理的不周全。用户信息使用自定义的oa单点登录。用户信息失效的时候被拦截,会返回302,重定向的login,然后自动重新登录。 打开DEV页面后长时间未操作,用户信息失效了,再点击切换到PROD的环境的时候发出的加载数据的ajax会被302重定向登录,此时PROD的数据没有被重新加载,但是页面上的Env切换了,即页面在PROD环境上,但是数据却是DEV的数据,再更新的时候就会导致此类问题。我的处理方案是拦截的时候判断不是页面及mediatype为applicaiton/json的请求,如果是的话直接返回403。 我看#3341 中增加了防御性的逻辑,判断了关联的namespace是否一致的逻辑,但是文本修改的话可能也会遇见相同的问题。 |
Thanks for providing the detailed report and I think you are right. I submitted a pr #4256 to fix this, please have a check. |
今天突然发现有一个appid(假设为app-a)的某个配置项被变动了但是并没有发布,修改人为另外一个项目(假设名为app-b)的所有者(app-b-user),app-b-user对app-a并没有权限。看历史操作记录,此时间点app-b-user对app-b做了修改,但是在app-b的修改历史记录中看到的key却是app-a中被修改的那个key(这个key在app-b中并不存在)。
求查该问题根源的思路,目前看日志没有发现异常,在数据库中看到Commit表中的操作记录,该条操作记录的 ChangeSets字段中记录的原始namespaceId和key都是app-a的,但是AppId、ClusterName、NamespaceName 这几个字段都是app-b的。
目前觉得异常的地方是提交的这个键值是很大一长串的json格式的数据,里面包含有空格、tab和换行符之类的隐藏字符。是否这个原因导致了异常?
The text was updated successfully, but these errors were encountered: