在存储过程中嵌入HTML代码

问题描述:

我们似乎在这里有几个开发人员认为创建吐出HTML或Javascript代码的存储过程是一件合法的事情。在我看来,这是对问题分离模式的最终滥用。做这样的事情人们经常看到人们在做什么?在存储过程中嵌入HTML代码

可怕的错!只是我的意见。

这是一个经典的新手错误。

如果您必须将标记放在SP输出中,您至少应该使用自己的标准化编码,然后让应用程序将其处理为HTML/Javascript。

例如

"<javascriptpopup>[outputuotputoutput]</javascriptpopup>" 

"<prettyfont>[outputuotputoutput]</prettyfont>" 

Yucko。有几个问题:

  • 无法“皮肤”应用程序 - 移动弯曲,桌面形式像一个完全新的演示文稿等
  • 您防止图形设计或UI专家在环境中工作这对他们是有益的。
  • 如果你混合你的HTML存储(一些在模板中,一些在数据库中,一些在应用程序代码中),那么跟踪UI问题是非常糟糕的。
  • 没有IDE DOM /布局验证
  • 无法预览或原型而无需运行数据库。

不言而喻的违反“低耦合,高内聚”原则。

我无法想象他们会如何将CSS格式应用于这样一个野兽。

,如果这是胡乱做它可能是违反原则,另一方面分层

关注分离的,存储过程expressely写入生成数据库信息的HTML可以在某些情况下是非常合法的,高效的, ESP。对于高度动态的软编码网站,即网站结构的一部分在数据库中编码的地方,或者数据库本身包含HTML片段的地方...

是的,我看到很多人这样做,不幸的是。你是对的,但它是邪恶的。

通常,层分离问题是两个相邻层混合时 - 您在数据库层中获得业务逻辑或业务层中的表示逻辑。但是,这完全跳过了一层,从用户端演示数英里的地方开始!必将成为一个难以维系的恐怖。

如果这些流氓无法被这种理智的恳求所证实,那么您可能能够在安全问题上抓住他们。存储过程中的数据库层功能不太可能知道如何转义输出为HTML或JS字符串文本的文本,导致非常可能的脚本注入攻击导致XSS攻击。例如,如果用户自称“Brian von < script> steal(document.cookie)</script>”,并将其粗略连接成存储过程HTML结果...

Utlimate no-no。除了安全性,低耦合和分层等所有以前的担忧,当贵公司希望联合内容,将其提供给移动设备(wap等),将其用于基于文本的电子邮件或打印等内容时会发生什么情况。

我认为问题不在于问题的分离,而是因为sprocs缺乏完成此项工作的工具。

此外,其他任何人遇到此代码将有问题搞清楚,这将是很难源代码控制,集成和单元测试。

唯一的例外是,如果您的数据库实际存储了其他地方编辑的Javascript或HTML,例如作为CMS的一部分。

我活过一家店铺的工作,整个应用程序发出所有HTML,谢天谢地使用对外部CSS/JS的引用。

项目启动时,Oracle不支持单独的Web /应用程序服务器 - 一切都通过PL/SQL。

有时你只是要使用whatcha了。尽管如此,我并不认为在任何现代数据库或应用程序体系结构中都可以从存储过程生成视图级别工件。