是否有一个catchall函数适用于清理SQL注入和XSS攻击的用户输入,同时仍允许某些类型的html标记?
我正在使用codeigniter框架.
我应该在哪里清理PHP输入 - 控制器或模型?
在阅读了其他几个问题后,我们会问这个问题.
在Netbeans 7.4 for PHP上"不要直接访问Superglobal $ _SERVER数组"
我已经加载了最新版本Netbeans 8.0,我看到了一个警告
不要直接访问Superglobal $ _REQUEST数组.
太棒了,我很高兴能在我做一些可以改进的事情时出现,所以我看看hints.
这个建议很简单.
请改用一些过滤函数(例如filter_input(),带有_*()函数的条件等).
所以我开始研究fliter_input()它尚未实现$_REQUEST.这似乎有点死路一条.
然后我读了一些非常有帮助的东西(@bobince)" 在你的脚本开始过滤时,你不知道你的输入最终会在哪里,所以你不知道如何逃避它. "
它提醒我,我确切地知道我的输入最终会在哪里,以及它将用于什么.所以,我想问问每个人我将采取的方法是否基本上是safe.
我正在设计一个REST- ish API,我$_SERVER['REQUEST_METHOD'];用来确定需要返回的资源.我也使用$_REQUEST['resource'];它应该包含的一切URI后/api/跟随.htaccess rewrite.
我对我的方法的问题是:
$_SERVER['REQUEST_METHOD'];是否符合要求GET PUT POST DELETE(无论如何我都需要做),是否真的存在不填写输入的问题?$_REQUEST['resource'];通过使用来访问filter_input (INPUT_GET, 'resource');吗?当这只用于确定资源,以及无法确定资源的地方(比如有人试图添加恶意代码)时,我们根本找不到资源并返回404 Not Found状态.我意识到,对于仅被视为警告的内容,这看起来似乎很多,但是根据我的经验,只修复错误将为您提供工作代码,但修复警告将帮助您理解代码的工作原理.
最近,我在一些客户的网站上进行了审计.他们回来的一件事是我可以更好地消毒输入数据,因为人们仍然可能对数据库造成潜在的伤害.
下面的功能是我目前正在使用的(旧开发人员的剩余部分),但我看不出潜在问题可能存在的地方.
传递给数据库的字符串将通过XML显示,而XML又由Flash应用程序读取.
谁能告诉我我可能会缺少什么?谢谢
function secure_string($string)
{
return (strip_tags(addslashes(mysql_real_escape_string(
stripslashes($string)))));
}
Run Code Online (Sandbox Code Playgroud)