node.js - SQL Server 允许为 NTLM 身份验证提供不正确的域名
问题描述
概括
使用 nodejs繁琐的驱动程序,我可以指定任何域名以通过 NTLM 身份验证连接到我的 SQL Server 实例,然后能够使用此连接查询数据库。
背景
繁琐的驱动程序被用作几乎所有流行的节点 SQL Server 模块(node-mssql,typeorm)的 db 连接器,不出所料,我在使用所有三个模块进行测试时遇到了这个问题。
从历史上看,我相信这不是问题,所以我开始怀疑这是否与我正在使用的 Windows 机器的配置有关(Win Server 2016)。不幸的是,我缺乏 Windows 管理知识。
目前官方 GitHub 上针对繁琐的驱动程序提出了一个问题,该问题完全涵盖了我所遇到的情况,但我不明白驱动程序如何成为此问题的根源。
我尝试过的事情
- 连接到 Windows 域的 VM
- 未连接到 Windows 域的 VM
- 与不是默认管理员的用户连接
- 成功登录尝试后检查事件查看器日志
- 这将 SecurityID、Account Name 和 Account Domain 显示为所有正确的值(而不是我在连接配置中指定的不正确的值)
再生产
npm 安装繁琐
let config = {
server: '<server ip>',
port: 1433,
authentication: {
type: 'ntlm',
options: {
domain: 'WRONGDOMAIN',
userName: 'Administrator', // update me
password: 'password' // update me
}
},
options: {
database: '<database name>'
}
}
然后,只要用户具有所需的权限,无论域值是什么,我都可以连接到数据库。
解决方案
推荐阅读
- python - 使用字典中的列表
- android - 从底部开始显示 RecyclerView 项目而不颠倒顺序
- nginx - Kubernetes入口错误:重定向你太多次
- java - 包含映射模型时,Spring Data JPA 获取所有列
- python - Pylint 错误:导入包时模块中没有名称
- linux - Bash:语法错误操作数应为“=”,在for循环中的赋值语句中
- html - 每当您在浏览器中检查 html 元素时,如何防止 html 元素被垂直压缩?
- xcode - 使用 swift 3 保持 sqlite 3 数据库打开
- html - CSS - 更改气泡的“句柄”
- reactjs - 在 reactjs 项目中使用 Material UI 的正确方法