我想为基础数据库的某些细节创建一个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>
我可以担心,即使将cachedwith设置为有一天,我仍然可能会太难以击中数据库。我也担心我引入了一个漏洞。数据库架构信息本身不是敏感信息
答案 0 :(得分:2)
你问了两个具体的问题 - 一个是缓存一天,两个,这是一个安全问题。
1)缓存一天似乎更多足够了。这是一个令人难以置信的长缓存。不知道为什么你认为这不够,但对我来说似乎很好。
2)我不是安全专家。你提到这只能通过内部IP访问,所以这可能已经足够好了,但你可能想问问自己为什么要分享这些细节?您的用户真的需要这些信息吗?
最后 - 不要忘记ColdFusion有一个<cfdbinfo>标签可以做到这一点。显然,你的代码很有用,但我只是在你不知道的情况下分享它。