我可能只是再次对安全感到偏执。让我夜不能寐的最新事情是我们的一个网站使用的支票。它在Windows环境中运行ColdFusion 9,我们通过isNumeric检查用户输入以验证字符串或输入它确实是一个数字。如果数字不是停止执行并向用户显示消息,则执行需要正常执行的操作。我的问题是,有没有办法打破这个检查?基本上某种类型的数字是数字会报告为数字,但实际上可能包含一些不好的东西?
<cfparam name="userInput" default="0">
<cfif isNumeric(userInput)>
// Should be a number id 500
// Use value to do SQL stuff because should be number
// I know, not the best practice. Plan to fix all of these but the
// amount of code is staggering to fix all of these. Figured
// start with one thing then move on
<cfquery>
SELECT * FROM db WHERE serial = #userInput#
</cfquery>
<cfelse>
// Not a number ie '500sws'
</cfif>
是否有可以传递给userInput的东西可以欺骗它报告真实但实际上不是?
我问的原因是因为这个网站很旧。事情已经过时了。我正在通过大量的代码工作,并且在我去的时候会有一些漏洞,但如果isNumeric可以被愚弄,那么我还有更多工作要做。
不确定我是否正确解释。如果需要澄清,请告诉我。
如果需要移动,请告诉我。谢谢大家。