0

我想为底层数据库的一些细节提供 Web 服务。

<cffunction name="getDBSchema" output="false" returnType="query" access="remote">


<cfquery name="local.qryPlugin" cachedwithin="#CreateTimeSpan(1,0,0,0)#">
    SELECT column_name, data_type, character_maximum_length, kcu.TABLE_SCHEMA, 
    kcu.table_name,ordinal_position, is_nullable 
    FROM information_schema.COLUMNS kcu
    ORDER BY table_name, ordinal_position
</cfquery>

<cfreturn local.qryPlugin>

我可以担心,即使将 cachedwithin 设置为一天,我仍然可能会太用力地打击数据库。我也担心我正在引入一个漏洞。数据库架构信息本身不是敏感信息

4

1 回答 1

2

您问了两个具体问题 - 一,是否足够缓存一天,二,这是一个安全问题。

1)缓存一天似乎绰绰有余。这是一个令人难以置信的长缓存。不知道为什么你会认为这还不够,但对我来说似乎很棒。

2) 我不是安全专家。您提到这只能通过内部 IP 访问,所以这可能已经足够了,但您可能想问自己为什么要共享这些详细信息?你的用户真的需要这些信息吗?

最后 - 不要忘记 ColdFusion 有一个<cfdbinfo>标签可以做到这一点。显然,您的代码有效,但我只是分享一下,以防您不知道。

于 2012-12-03T13:09:12.357 回答