2015-06-22 42 views
1

我正在寫一個MySQL觸發器來使用RSA插件來加密一列敏感數據。有從網站是基於PHP的MySQL觸發幫助,從php中捕獲變量插入到

$sql = "insert into redcap_data (project_id, event_id, record, field_name, value) values 
          ($project_id, " . getEventId() . ", '" . prep($_GET['id']) . "', '{$_GET['page']}_complete', '2')"; 

在了扳機,我需要確定PROJECT_ID和FIELD_NAME匹配,從我的表redcap_encryption的專案編號和字段名的INSERT語句,是這樣的話,我們只執行加密一個特定的項目。

我有點不確定如何攔截和選擇這是一個從網站傳遞給DB

我只是做了以下(基本我知道)

CREATE TRIGGER `ssnencrpyt` 
BEFORE INSERT ON redcap_data 
FOR EACH ROW BEGIN 
IF project_id, field_name IN (SELECT ProjectID,FieldName FROM redcap_encryption) 
INSERT語句中PROJECT_ID和FIELD_NAME

感謝

+0

爲什麼你PU在查詢中設置「$ _GET」數據?你希望你被黑客攻擊嗎? – tadman

+0

不知道,這不是我們的代碼,但我會把它傳遞給提供者,謝謝。 – phemor

+1

如果這是商業軟件,他們只是以最糟糕的方式失敗了SQL注入審計。 – tadman

回答

0

您是在正確的道路上:

IF (SELECT true FROM redcap_encryption WHERE ProjectID=NEW.project_id AND FieldName=NEW.field_name).... 
+0

謝謝,這很完美。 – phemor