2013-02-04 14 views
1

我有一個servlet響應我的GET請求'/getdata'如何確保GET來自我的網站?

get '/getdata' do 
    if request.referrer.to_s == '/my_website_uri' 
    erb :content 
    else 
    reponse = [ 404, {'Content-Type' => 'text/html'}, '<h1>404 - Not Found</h1>' ] 
    end 
end 

我要確保,如果該請求是通過我的網頁,然後給出數據,否則給404

我上面的代碼。它檢查請求引用者是否包含我的URI,但我認爲任何人都可以嘲笑這樣的請求......有沒有更好的方法?

+0

你的問題很混亂。你似乎在描述Servlet的工作,但是用Ruby代碼而不是Servlet代碼來展示它。你究竟擁有什麼? Servlet調用Ruby,因此Ruby應該執行檢查,或者Ruby調用Servlet,因此Servlet應該執行檢查? – BalusC

+1

*旁註*:我通常不會給出404,因此您無法區分文件是否真的缺失或有意這樣做。考慮使用'403 Forbidden'或'401 Unauthorized'。 – Raptor

+0

@BalusC它是一個ruby servlet,而不是Java。 – texasbruce

回答

3

是,referer is trivial to spoof。不,沒有一種既簡單又安全的方式。

您可以像控制訪問其他任何方式一樣來控制對該URL的訪問:使用您挑選的授權和身份驗證協議 - 如HTTP basic(通過SSL!)或OAuth那樣簡單。