好傢伙,這是我的SQL查詢:連接兩個表在MySQL
SELECT *
FROM path JOIN (
SELECT * FROM invoice WHERE client_Id='$_SESSION[user]'
) ON INVOICE.path_Id=PATH.Id
我想加入的第一個表中的兩個表必須具有client_Id=$_SESSION[user]
。這兩張桌子必須加入path_Id
。請幫助我以正確的方式編寫此查詢。謝謝
好傢伙,這是我的SQL查詢:連接兩個表在MySQL
SELECT *
FROM path JOIN (
SELECT * FROM invoice WHERE client_Id='$_SESSION[user]'
) ON INVOICE.path_Id=PATH.Id
我想加入的第一個表中的兩個表必須具有client_Id=$_SESSION[user]
。這兩張桌子必須加入path_Id
。請幫助我以正確的方式編寫此查詢。謝謝
嘗試此查詢
SELECT *
FROM `PATH` JOIN `INVOICE`
ON `INVOICE`.`path_Id`=`PATH`.`Id`
WHERE `INVOICE`.`client_Id`='$_SESSION[user]'
有這麼多的事情錯在該行的代碼:
Saintize用戶輸入。通過將$ _SESSION變量直接插入到 SQL查詢中,您將引入SQL注入漏洞,沿 引入XSS和CSRF漏洞。如果有機會,人們可以並且會爲您的應用程序做一些令人討厭的事情 。
千萬不要選擇超出您需要的數據。你真的需要 這兩個表中的所有列嗎?
爲什麼選擇兩個? A SELECT * FROM Path p JOIN Invoice i ON i.path_id = p.id WHERE i.client_id = 1 LIMIT 1
將完成這項工作。
XSS和CSRF(XSRF)是不同的。 – Lion 2013-04-24 00:41:39
@Lion你是對的,我提到了XSRF,因爲如果他與數據庫中的「原始」用戶輸入相匹配,那麼很可能是他沒有重新生成會話ID,也沒有跟蹤用戶會話中的唯一ID;所以對他的應用程序執行XSRF攻擊會相對容易。 – ILikeTacos 2013-04-24 00:49:22
在CSRF攻擊中,攻擊者通常會玩遊戲,用戶擁有已存儲在其(用戶)瀏覽器中的經過驗證的Cookie。當網站不認識到請求來自**授權用戶**時,攻擊可能是明智的,相反,它只驗證請求來自**授權用戶的瀏覽器**。攻擊者做的是讓瀏覽器代表他提出請求,執行用戶完全沒有意識到的明智行爲。重新生成會話ID對於會話固定非常有用,但與CSRF(或XSRF)無關。 – Lion 2013-04-24 03:38:28