我们运行一些网络服务。
我们使用ModSecurity for Apache webserver和OWASP核心规则集。
我们在希腊文和俄文请求方面遇到问题,因为西里尔文和希腊文字母。
在OWASP CRS的规则中,有这样的模式
“(^[\””;]|[\'
''';]$)”
在ModSecurity日志中有UTF-8代码单元,其中应为unicode字符。所有ascii字母均按原样显示为字符。
示例:
[匹配的数据:\x85 2\xce\xb7\xce\xbe\xb9\xce\xbf\xcf\x85\xcf\x80\xce在参数中找到:q:163 45\xcf\xcf\x83\xce\xbf\xcf\x85\xce\xbd\xce\xcf\xcf\x85 2\xce\xb7\xce\xcb\xce\xcf\xcf\xcf\xcf\xcf\xcf\xcf\xcf\xce
[模式匹配](?i:(?:[\“'\\xc2\\xb4\\xe2\\x80\\x99\\xe2\\x80\\x98)]\\\\s*?(x?或| div | like |介于|和|之间)\\\\s*?[\\'(?:\\\\x(?:23 | 27 | 3d))(?:^.?[\'(?:^.?[\'<代码>\\xc2\\XB2\\x80\\x99\\x80\\x99\\X20\\x98]$)。(?:(?:^[\''.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
现在我们知道它是由希腊语的请求触发的: σουνιου ηλιουπολη (雅典的一条街)那不是我们的问题。我们可以弄清楚。
问题是x80是字符(e2 80 99)的一部分,x80也是希腊字母的一部分,这就是为什么我们得到一个假阳性。
触发的实际规则:
REQUEST_COOKIES|REQUEST_COOKIES:/__utm/|!REQUEST_COOKIES:/_pk_ref/|REQUEST_COOKIES_NAMES|ARGS_NAMES|ARGS|XML:/* "(?我:(?:[\"'<代码>']\s*?(X?或|div|like||和)\s*?[\"'
"']?\d)|(?:\\x(?: 23|27|3d))|(?:^.?[\"'´’‘]$)|(?:(?:^[\"'
"\\]?(?:[\d\"'´’‘] |[^\"'
´’‘] [\"'´’‘])) \s*?(?: n?和|x?X?或|div|like|介于|和|不|\|\||\
为了解决这一问题,我们将一些模式(如[\”
'''''')调整为(\“\”
\\\xc2\xb4\xe2\x80\x99\xe2\x80\x98),使其与构建字符的UTF-8代码单元的实际组合相匹配。我们可以对核心规则集的所有55条SQL注入规则html" target="_blank">执行此操作,但这是一项非常耗时的任务。
我们想知道Apache或ModSecurity的解码是否存在错误配置。我们知道所有非ascii和一些ascii字符都是由网络浏览器用%和UTF-8编码的网址。
我不认为这是一个解码问题,这在我看来是意料之中的,如果知道您要保护的应用程序将其所有URL输入都视为UTF-8,那么您的(令人恼火的冗长)修复就可以了。(例如,对于使用Windows-1252的东西来说,这是不“正确”的,因为它会让“
再次通过。)
或者,您可以完全删除智能报价过滤,前提是您不打算保护一个已知存在SQL注入问题以及Unicode处理不佳的应用程序。智能引号存在于其中,因为如果应用程序使用平台函数将非ASCII字符映射为ASCII(如Windows错误引导的“最佳匹配”映射),然后将其展平为ASCII,则它们可能会转换为单引号,从而避免前面尝试删除这些字符的WAF过滤器。(在我看来,这条规则似乎没有包括其他一些可能会被压平为引号的字符,如U 02B9、U 02BC、U 02C8、U 2032和U FF07,因此它在任何情况下都可能已经不是无懈可击的。)
TBH这是MDA安全CRS规则课程的标准;特别是对于在路径部分使用任意字符串的站点,您会得到大量误报,而部署此类工具的更大部分是配置它们以避免最严重的损坏。
IMO: WAFs在原则上有根本的缺陷(因为不可能定义哪些输入可能构成攻击,而不是有效的请求),默认的CRS比大多数都有更多的缺陷。作为一种战术措施,它们很有用,可以阻止针对无法立即在源代码中修复的软件的已知攻击,但作为一种通用输入过滤器,它们通常会导致比修复更多的问题。
我在我的应用程序中使用HMS核心插件(Huawei Location Kit),在调试模式下一切正常,但当我打开它的发布模式时,它抛出了以下错误,尽管我可以正常访问Huawei Location Kit: 我不知道是什么引起了这个问题。有什么想法吗?
3 采集规则 采集规则是Pholcus最重要的组成部分之一,它采用高度灵活的结构化规则实现。 在采集规则里,你可以指定规则名、规则描述、采集网页、采集页数、采集关键词、采集内容字段等。 目前在 https://github.com/pholcus/spider_lib 由所有用户共同维护着一个公共规则库,欢迎大家贡献一份力量! 链接 Spider 包讲解 Request 结构体 Response
我有一个简单的JAVA bean,有两个int字段:'a'和'b'。 更新 非常感谢你的回答。 也许我应该详细描述一下我的问题。我有一套1500条规则。每条规则: null Java代码: 解决方案2的DRL文件:我向每个规则添加了相同的激活组:
我正在使用ASP.NET内核。我正在创建一个基本的WebAPI。我想在出现问题时显示一个JSON错误。 打印屏幕在我的屏幕上显示want I want。唯一的问题是它的发送状态码为200。 我可以通过这样做来解决问题: 真诚的,布莱希特
.NET核心和ASP.NET核心到底有什么区别?
如何在ASP.NET Core2.1项目中设置swagger属性?根据这篇文章,我应该使用,但我在swashbuckle.aspnetcore库中找不到它。还有 而且我找不到任何用于大摇大摆生成目的的实现。
3.4 运行规则分析 本节会给大家提供一个参考实例,用于告诉大家如何根据具体的业务实现自己的爬虫框架。 我们以公共规则中“阿里巴巴产品搜索”为例(这些公共的规则都在github.com/pholcus下面包含,大家可以参考下)。 package spider_lib // 基础包 import ( "github.com/PuerkitoBio/goquery"
我想用Sonarqube分析一个.NET项目。我正在使用sonar-scanner-msbuild-2.3.1.554-我已经编辑了sonarq.analysis.xml-我运行以下命令 msbuild.sonarqube.runner.exe“begin/key:”AHC“/名称:”AHC项目“/版本:”1.0“msbuild.exe”d:\tfs\ahc\mainbranch\tfsCompl