2013-01-15 42 views
3

我有一个PHP脚本处理来自付款处理器的回调。GET连字符引起错误403

如果查询字符串'结果'包含双破折号后跟单个,我们得到403,例如,

/index.php?result=A--B- (returns 403) 
/index.php?result=A-B- (is OK) 
/index.php?result=A-B-- (is OK) 
/index.php?result=A--B (is OK) 
/index.php?result=A---B (returns 403) 
/index.php?result=A-B-C- (is OK) 

对于这个网站,也有.htaccessapache config没有重写规则。

加载的模块如下:

core prefork http_core mod_so mod_auth_basic 
mod_auth_digest mod_authn_file mod_authn_alias 
mod_authn_anon mod_authn_dbm mod_authn_default 
mod_authz_host mod_authz_user mod_authz_owner 
mod_authz_groupfile 
mod_authz_dbm mod_authz_default util_ldap 
mod_authnz_ldap mod_include mod_log_config mod_logio 
mod_env mod_ext_filter mod_mime_magic mod_expires 
mod_deflate mod_headers mod_usertrack mod_setenvif 
mod_mime mod_dav mod_status mod_autoindex mod_info 
mod_dav_fs mod_vhost_alias mod_negotiation 
mod_dir mod_actions mod_speling mod_userdir mod_alias 
mod_rewrite mod_cache mod_suexec mod_disk_cache 
mod_file_cache mod_mem_cache mod_cgi mod_version 
mod_security2 mod_unique_id mod_php5 mod_ssl 
+0

您是使用框架还是这是一个简单的PHP脚本? –

+0

嗨,彼得,没有框架被使用,只是一个简单的脚本。实际上,只用包含echo phpinfo()的test.php进行测试。具有相同的结果。所以我认为实际的脚本与这个问题无关。谢谢 – user1978903

+1

如果您禁用mod-security2,它会工作吗?这是一个禁止的错误,所以安全性可能是问题。 –

回答

3

当然它已被阻止通过的mod_security。

“ - ”通常是SQL中行注释的开始标志。有时程序员直接使用用户输入(如$ _GET []数组)来构建SQL查询,这导致了一个名为SQL Injection的漏洞。

所以mod_security会在cookies,查询字符串和发布的表单中检查这样的字符串。一旦找到非法字符串,它将显示403 Forbidden错误。

如果确实需要“ - ”在你的查询字符串,你确定你有处理的查询字符串正确(或你不实际执行SQL查询),你可以从mod_security后删除该规则。

您可能会发现

MOD_SRCURITY_INSTALLATION_PATH/base_rules/modsecurity_crs_41_sql_injection_attacks.conf

MOD_SRCURITY_INSTALLATION_PATH取决于您的服务器环境的规则。

您可能会发现不久包含字符串--并修改它们

# 
# -=[ Detect SQL Comment Sequences ]=- 
# 

# 
# -=[ PHPIDS - Converted SQLI Filters ]=- 
# 
# https://dev.itratos.de/projects/php-ids/repository/raw/trunk/lib/IDS/default_filter.xml 
# 

搜索规则,这样的规则。 因为它们都是用RegExp编写的,所以你应该先学习它。

+0

这可能是一个很好的答案,只是你的最后一行不太好。大写字母大喊,编辑规则将删除某些保护措施,但不会降低功能或导致Apache停止工作。有大量安全规则集,如果用户总是使用预准备语句或不使用SQL,则可以删除所有SQL规则。另外,你对OPs规则集做出了假设,我怀疑这些行号与默认值相关,如果是这样的话。如果你解决这些问题,你会得到我的投票。 –