2013-01-15 16 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規則集做出了假設,我懷疑這些行號與默認值相關,如果是這樣的話。如果你解決這些問題,你會得到我的投票。 –