我想制作一个白名单,忽略在网页上输入的所有未经授权的字符,例如:
127.0.0.1/myweb/home.php?u=user // here is the authorized(default) url
但是当攻击者(当然是用户)将我的默认网址设为这样:
127.0.0.1/myweb/home.php/>"><script>alert("XSS")</script>&?u=user
当攻击者按下重新加载或进入(用未经授权的代码重新加载网址)时,将忽略从页面重新加载的恶意代码和/或自动删除或其他内容。然后重新加载的页面将返回这样的安全:
127.0.0.1/myweb/home.php?u=user // back to the authorized url/s
但是我没有任何代码或知识来执行此操作,我尝试preg_match()
匹配,如果网址上存在某些代码 XSS类型代码它将重定向到错误页面。但有些人认为这是不可取的,因为它被称为blacklisting
,可取的是whitelisting
。我搜索白名单的例子,但我找不到我要找的东西。如果我找不到任何关于白名单的内容,我可能会继续执行preg_match()
又名黑名单类型的代码
Addtional(错误日志apache)
[Wed Jun 01 21:53:50.244776 2016] [core:error] [pid 3684:tid 1684](20024)给定路径格式错误或包含无效字符:[client 127.0.0.1:51833] AH00127:无法映射GET /ooplr2/home.php/%3E%22%3E%3Cscript%3Ealert(%22XSS%22)%3C/index.php HTTP / 1.1到文件
答案 0 :(得分:0)
您可以使用strip_tags()函数:http://php.net/manual/en/function.strip-tags.php
答案 1 :(得分:0)
您应该做的是验证输入数据。正如您已经提到的那样,依靠任何用户输入都不能保存,因此您应该对其进行过滤。这取决于您的需求。
简单方法:strip_tags()
- &gt; http://php.net/manual/en/function.strip-tags.php
自定义方式:regular expressions
- &gt; http://regexr.com