4

我正在开发一个 SaaS(软件即服务)Web 应用程序,并且我正在为单独的帐户使用子域。

我应该阻止用户使用哪些子域。

我目前拥有的是……管理员、管理员、博客、支持和帮助。我记得在 Quora 上看到过一个关于它的问题,但我再也找不到了。

4

5 回答 5

4

感谢您的建议。我制作了一个 Rubygem 来阻止可以在此处找到的大量子域 - https://github.com/deanperry/saas_deny_subdomains

只需添加deny_subdomains :subdomain(:subdomain) 作为字段,它将阻止/拒绝大量子域。

于 2012-08-10T18:55:28.767 回答
2

这是我的 PHP 版本。我添加了一些我的 + 线程中建议的 + 院长佩里的。通过使用一些正则表达式,我能够涵盖很多场景。

/**
 * Checks if the subdomain is good. e.g. forbidden names are: ssl, secure, test, tester etc.
 * @see http://stackoverflow.com/questions/11868191/which-saas-subdomains-to-block
 * @see https://github.com/deanperry/saas_deny_subdomains/blob/master/lib/saas_deny_subdomains/subdomains.rb
 * @return boolean
 */
public function isSubdomainAvailable($subdomain) {
    $banned_subdomains_csv = 'admin, login, administrator, blog, dashboard, admindashboard, images?, img, files?, videos?, help, support, cname, test, cache, mystore, biz, investors?
    api\d*, js, static, s\d*,ftp, e?mail,webmail, webdisk, ns\d*, register, join, registration, pop\d?, beta\d*, stage, deploy, deployment,staging, testers?, https?, donate, payments, smtp,
    ad, admanager, ads, adsense, adwords?, about, abuse, affiliate, affiliates, store, shop, clients?, code, community, forum?, discussions?, order, buy, cpanel, store, payment,
    whm, dev, devel, developers?, development, docs?, whois, signup, gettingstarted, home, invoice, invoices, ios, ipad, iphone, logs?, my, status, networks?, 
    new, newsite, news, partner, partners, partnerpage, popular, wiki, redirect, random, public, resolver, sandbox, search, servers?, service,uploads?, validation,
    signin, signup, sitemap, sitenews, sites, sms, sorry, ssl, staging,features, stats?, statistics?, graphs?, surveys?, talk, trac, git, svn, translate, validations, webmaster,
    www\d*, feeds?, rss, asset[s\d]*, cp\d*, control panel, online, media, jobs?, secure, demo, i\d*, img\d*, css\d*, js\d*';

    $regex = $banned_subdomains_csv;
    $regex = preg_replace('#\s#si', '', $regex); // rm new lines, spaces etc
    $regex = preg_replace("#,+#si", '|', $regex); // more than one comma
    $regex = trim($regex, ','); // remove any leading/trailing commas
    $regex = '#^(?:' . $regex . ')$#si'; // let's create a nice regex.

    $status = !preg_match($regex, $subdomain); // without main domain added

    return $status;
}

斯拉维

http://orbisius.com

于 2012-08-11T05:23:47.543 回答
1

命名视图:

  • 万维网
  • 帮助
  • 支持
  • 行政
  • api
  • 资产0-x
于 2012-08-08T15:47:35.777 回答
1

除了提到的那些:

  • 测试
  • 舞台/舞台
  • 开发/开发
  • 地位
  • 邮件
  • 网络邮件
  • ftp
  • 饲料
  • SSL/安全
  • 演示
  • 混帐/svn
  • 文件/文档

可能还想保留您自己的名字和任何变体。

编辑:只是一个想法,也许是最重要的,但你也可以考虑保留 i.example.com 之类的东西(“i”代表内部)然后你就有了一个完整的 *.i.example.com 命名空间内部使用。

于 2012-08-08T21:56:34.167 回答
0

解决此问题的另一种方法是您的客户的用户名或公司在app-tenant.domain.com哪里。tenant这意味着您可以在您的 DNS 设置中使用 app-*.domain.com 之类的内容来为您的用户打卡。但是,如果您使用应用程序级别的负载均衡器,那应该会更容易。恕我直言,这看起来更漂亮。 注意:app.**.domain.com 是无效的 AFAIK

于 2021-11-23T01:12:25.233 回答