Php 编码点火器输入滤波
我在一个图书上市网站工作,遇到了codeigniter的xss过滤问题。提交表单以创建列表时,包含“Javascript:”的任何标题都将替换为“[REMOVED]”。我尝试过从POST数组访问数据,如下所示:Php 编码点火器输入滤波,php,codeigniter,xss,Php,Codeigniter,Xss,我在一个图书上市网站工作,遇到了codeigniter的xss过滤问题。提交表单以创建列表时,包含“Javascript:”的任何标题都将替换为“[REMOVED]”。我尝试过从POST数组访问数据,如下所示: $title = $_POST['title']; 为了避免使用输入类,但它仍然以某种方式被过滤。有没有办法不关闭全局搜索过滤 有没有办法不关闭全局搜索过滤 不,对不起。您必须关闭它,因为它会在CI执行的早期更改原始post数据 我可以滔滔不绝地说5页关于xss过滤器的正确使用,但我会
$title = $_POST['title'];
为了避免使用输入类,但它仍然以某种方式被过滤。有没有办法不关闭全局搜索过滤
有没有办法不关闭全局搜索过滤
不,对不起。您必须关闭它,因为它会在CI执行的早期更改原始post数据
我可以滔滔不绝地说5页关于xss过滤器的正确使用,但我会尽量保持简洁:
- 过滤输出,而不是输入
- 始终牢记上下文并适当转义(这是HTML?SQL?javascript?文本文件?)
- 全局过滤器是一个安全毯。一旦你知道你在做什么,你就可以移除它
- 用户注册帐户,并将其密码设置为
document.write123
- 处理密码,最后对字符串进行哈希运算
[removed]123
- 现在,用户可以使用以下任意密码登录,因为在对密码进行哈希验证之前,这些密码也会被过滤器转换为
:[removed]123
123
document.write123
document.cookie123
- 等等
另外,祝你好运,保存任何使用
s的博客帖子。。。例如YouTube视频。这个答案可能会帮助你:你能解释一下为什么我们应该过滤输出而不是输入吗?我真的很想知道为什么,因为到目前为止,我一直在过滤输入。因为输出是上下文敏感的,PHP无法找出数据的用途-你必须告诉它如何正确地转义。如果过滤输入,会污染原始数据,无法恢复。如果过滤输出,原始数据将保持不变。假设我希望用户发布代码示例(如在本网站上)。使用“哑”全局过滤器将使这变得不可能。它可能产生的另一个副作用是,您开始隐式地“信任”所有用户数据,这是不好的。此外,如果XSS筛选器得到改进,您可能希望在输出上利用它。此外,全局XSS筛选器在每个请求上都对所有get、post和cookie数据运行,而且速度相当慢,有时甚至很愚蠢。例如,删除像
和alert()
这样的东西,这是任何真正的黑客都不会介意的。当然,这些事情可能会造成破坏,但这不是XSS的重点。