μ νλ‘μ λ€μμ osTicket(v1.8.1-dpr)μ μ¬μ©νλ €κ³ νλ©΄ μμ μ μΌλ‘
Invalid CSRF Token __CSRFToken__
Invalid CSRF token [b4cab350cfce13ee10a8cd27445e7f4466db039e] on
(redacted)
μμΈμ λΈλΌμ°μ IPλ₯Ό κΈ°λ°μΌλ‘ ν ν°μ μμ±νλ osticket μλ°μ€ν¬λ¦½νΈμΈ κ²μΌλ‘ 보μ΄λ©°, μ΄λ λ¬Όλ‘ ν ν°μ΄ μλ² μΈ‘μμ νμΈλ λ μλ°©ν₯ νλ‘μ IPμ λ€λ¦ λλ€.
μλ°©ν₯ νλ‘μλ ec2μ Apache μΈμ€ν΄μ€μ λλ€.
μλ°©ν₯ νλ‘μλ X-Forwarded-For
보λ΄μΌ ν©λλ€. κ·Έκ²μν©λκΉ?
μ, μλ°©ν₯ νλ‘μκ° X-Forwarded-Forλ₯Ό μ¬λ°λ₯Έ μ£Όμλ‘ μ€μ νκ³ μμ΅λλ€. ν΄λΌμ΄μΈνΈλ NAT λ€μ μμΌλ―λ‘ λ°μΈλ©λ μΈν°νμ΄μ€ μ£Όμλ₯Ό λ°λ κ²½μ° Javascriptκ° μ μ¬μ μΌλ‘ RFC1918 μ£Όμλ₯Ό μ»μ μ μμ΅λλ€(λ°μνλ κ²½μ° λΆλΆλͺ ).
νλ‘μ μλ²(osTicketμ΄ μ€νλλ μμΉμ ν΄λΌμ΄μΈνΈ) κ°μ μΏ ν€ μ€μ μ νμΈν μ μμ΅λκΉ? λ°νλ μΏ ν€μ μΏ ν€ λλ©μΈ λ° μΏ ν€ κ²½λ‘λ₯Ό νμΈνκ³ κ·Έ μ¬μ΄μ μλ μλ²κ° μΏ ν€ λλ μΏ ν€ μ€μ μ μ¬μ©νμ§ μλμ§ νμΈν©λλ€.
νμΈν΄ λ³΄κ² μ΅λλ€. νμ§λ§ λ¬Έμ κ° μλ κ³³μ΄ λ°λ‘ λ¬Έμ μΌ μ μμ΅λλ€(λ΄λΆ νΈμ€νΈ λλ©μΈκ³Ό νλ‘μλ λλ©μΈμ ν¬κ² λ€λ¦). λͺ μκ° νμ μ λ°μ΄νΈνκ² μ΅λλ€.
μ΄ κ²μλ¬Όμ΄ 1λ μ΄ λμλ€λ κ²μ μκ³ μμ§λ§ osTicketμΌλ‘ μλ°©ν₯ νλ‘μλ₯Ό μ€μ νλ €κ³ μλνλ λμ μ¬λ¬ λ² λνλ¬μ΅λλ€. NginXλ₯Ό μ νλ‘μλ‘ μ¬μ©νκ³ μμ΅λλ€(μκ³ μμ, μ§μλμ§ μμ λ±). "μλͺ»λ CSRF ν ν°" μ€λ₯λ₯Ό μ λ¬ν μ μμλ λͺ κ°μ§ μ‘°μ μμ μ΄ μμ΅λλ€.
λ΄ μμΉ λΈλ‘μμ λͺ κ°μ§ ν€λ μ€μ μ μΆκ°ν΄μΌ νμ΅λλ€.
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
proxy_pass <Backend osTicket location>;
}
pass_headerλ μλνλ κ²μ²λΌ 보μμ§λ§ λ€λ₯Έ μ€μ μ μλ²κ° μ¬λ°λ₯Έ IP μ£Όμλ₯Ό μμ νλλ‘ ν©λλ€. μλ² λλ http λΈλ‘μμλ ν΄λΉ μ€μ μ μ§μ ν μ μλ€κ³ μκ°νμ§λ§ μ΄κ²μ΄ μ μꡬ μ¬νμ λΆν©νμ΅λλ€.
@webbe μ°λ¦¬λ 곡μμ μΌλ‘ nginxλ₯Ό osTicketμ© μλ²λ‘ μ§μνμ§ μμ΅λλ€. 리λ²μ€ νλ‘μμ λν΄ μνλ κ²μ μ¬μ©ν μ μμ΅λλ€. κ°μΈμ μΌλ‘ HAProxyλ₯Ό μ νΈν©λλ€. κ΅¬μ± μ 보λ₯Ό κ²μν΄ μ£Όμ μ κ°μ¬ν©λλ€. μ€μ μ΄ μ λλ‘ μλνκ² λμ΄ κΈ°μ©λλ€.
κ°μ₯ μ μ©ν λκΈ
μ΄ κ²μλ¬Όμ΄ 1λ μ΄ λμλ€λ κ²μ μκ³ μμ§λ§ osTicketμΌλ‘ μλ°©ν₯ νλ‘μλ₯Ό μ€μ νλ €κ³ μλνλ λμ μ¬λ¬ λ² λνλ¬μ΅λλ€. NginXλ₯Ό μ νλ‘μλ‘ μ¬μ©νκ³ μμ΅λλ€(μκ³ μμ, μ§μλμ§ μμ λ±). "μλͺ»λ CSRF ν ν°" μ€λ₯λ₯Ό μ λ¬ν μ μμλ λͺ κ°μ§ μ‘°μ μμ μ΄ μμ΅λλ€.
λ΄ μμΉ λΈλ‘μμ λͺ κ°μ§ ν€λ μ€μ μ μΆκ°ν΄μΌ νμ΅λλ€.
pass_headerλ μλνλ κ²μ²λΌ 보μμ§λ§ λ€λ₯Έ μ€μ μ μλ²κ° μ¬λ°λ₯Έ IP μ£Όμλ₯Ό μμ νλλ‘ ν©λλ€. μλ² λλ http λΈλ‘μμλ ν΄λΉ μ€μ μ μ§μ ν μ μλ€κ³ μκ°νμ§λ§ μ΄κ²μ΄ μ μꡬ μ¬νμ λΆν©νμ΅λλ€.