ASP(VBScript)中输入处理的最佳方式(或至少是最常用的方法)是什么?我主要关心的是HTML / JavaScript注入和放大器。 SQL注入。是否有一些等同于PHP的htmlspecialchars
或addslashes
等等?或者我是否需要手动执行字符串替换功能?
答案 0 :(得分:5)
底线是:
Server.HTMLEncode()
为您做到这一点。ÀDODB.Command
和ADODB.CommandParameter
对象是正确的选择。如果你坚持第1点和第2点盲目,我想不出太多可能出错的地方。
大多数漏洞来自未正确编码用户输入或从中构建SQL字符串。如果由于某些原因,HTML编码用户输入阻碍了您的使用,那么您在应用程序中发现了一个设计缺陷。
答案 1 :(得分:2)
我会向Tomalaks列出另外一点。
避免在SQL代码中使用字段值的串联。也就是说,在某些情况下,存储过程可能会在字符串中构建一些SQL以便随后执行。除非将文本字段值用作其构造的一部分,否则这很好。
命令参数可以保护用于输入值的SQL代码,使其不被劫持到执行不需要的SQL,但它允许这种不需要的SQL成为数据库中的数据。这是第一级的可用性。如果在存储过程内的某些SQL字符串连接中使用字段的值,则存在二级注入可用性。
另一个考虑因素是这只是最小的保护。它所做的一切都是使攻击企图无害。但是在许多情况下,最好添加一个系统来防止此类数据输入和/或改变管理员潜在的注入攻击。
这是输入验证变得重要的地方。我不知道有哪些工具可以帮到你,但是一些简单的正则表达式可能有所帮助。例如,“< \ w +”将检测在字段中包含HTML标记的尝试。