[英]Linebreaks not displaying in email sent to Outlook via Sharepoint
[英]Permissions to delete spam comments sent in via the Podio Email to item feature
通過電子郵件到項目功能接收未經請求的評論到我們公司的Podio空間中,我們一直處於尷尬而持續的狀態。 我們的垃圾郵件偶爾會到達,有時會收到數百封。 從Podio工作區中刪除有問題的用戶無濟於事。 我們當然已經聯系了Podio支持,但是他們無法提供幫助。
我認為其他人也有或容易受到同樣的侵害。 似乎Kirsten Campbell-Morris在2014年報告了同樣的漏洞。
我們的分析是,已經捕獲了Podio發送的電子郵件通知,並使用了唯一的回復地址。 根據我們的分析(和理論),這是一個只寫漏洞。
在我們的案例中,垃圾郵件很容易被歸類為垃圾郵件/火腿:它們全部來自一個用戶𝒰,並且始終通過“郵件發送到郵件”功能到達。 除了垃圾郵件之外,我們再也不需要此功能,並且很樂意完全擺脫此管理不善的功能。
我們按照開發的時間順序,草繪了三種替代解決方案:
有關其他內容(1.和2)的描述,請參見下文。但是,我們更願意使用webhooks來使用最新的想法(3.)。 這個想法是為工作區中的所有應用程序comment-create
一個或單獨的comment-create
掛鈎。 它會收到有關注釋創建的HTTP請求,使用Podio API進行身份驗證,獲取有問題的注釋,確定是否為垃圾郵件,並在必要時將其刪除(例如說,在我們的情況下,確定垃圾郵件很簡單)。
我將這個想法實現為最小的Lumen API端點。 收到帶有以下JSON有效負載的webhook請求時
{
"item_id": "yyyyyyyyy",
"hook_id": "zzzzzzz",
"type":"comment.create"
}
它被傳遞給PodioComment::get()
進行決策。
問題是刪除操作[ PodioComment::delete()](https://developers.podio.com/doc/comments/delete-a-comment-22347) receives a
PodioForbiddenError`,盡管它使用來自用戶的令牌進行身份驗證𝒰。
PHP堆棧跟蹤
PodioForbiddenError in Podio.php line 319 at Podio::request('DELETE', '/comment/xxxxxxxx', array()) in Podio.php line 358 at Podio::delete('/comment/xxxxxxxx') in PodioComment.php line 46 at PodioComment::delete(xxxxxxxx) in CommentController.php line 116
這里發生了什么? 我不能正確認證嗎? 我可以執行其他任務,例如獲取評論和其他Podio項,以及Podio::setup()
和Podio::authenticate_with_app()
成功運行,並帶有客戶端ID和密碼,以及應用程序ID和令牌。
我們目前的理論是,“ 電子郵件到項目”功能是一個單獨的應用程序(具有自己的app_id
)。 如果這是正確的,我們如何才能通過該應用進行身份驗證以從中刪除評論? 如果沒有,我們還可以刪除垃圾評論嗎? 我們如何檢查自定義程序對各種Podio項目具有哪些權限?
其中的第一個(1.)是一個PHP程序,該程序是用Podio PHP客戶端編寫的,並計划作為cronjob運行。 這個想法是定期(例如每6個小時)進行身份驗證,掃描所有項目以查找新評論,並在被視為垃圾郵件時將其刪除。 這沒有用,因為盡管程序是在管理員用戶的API密鑰上運行的,但它無權刪除用戶made發表的注釋。
這是通過抓屏並自動按下Web UI上的按鈕進行的。
我們以用戶login登錄,導航到他們的活動流,打開瀏覽器開發人員工具,將以下程序復制粘貼到控制台中,然后喝咖啡。 這繞過了(1.)和(3.)的身份驗證問題,但是操作麻煩並且容易出錯。
// Add the user id to remove in here. There is a good chance it is
// a six-digit number
var spamUid = 'xxxxxx';
// Consider only comments made after this date
var spamDate = new Date(2018, 04, 01);
var spamUserUrl = 'https://podio.com/users/' + spamUid;
var mnum = {
'January': 0,
'February': 1,
'March': 2,
'April': 3,
'May': 4,
'June': 5,
'July': 6,
'August': 7,
'September': 8,
'October': 9,
'November': 10,
'December': 11
}
var titleToDate = (title) => {
re = /(\s*\d*) ([A-Za-z]*) (\d{4}) (\d*):(\d*)/;
[, D, M, Y, h, m] = re.exec(title);
d = new Date(Y, mnum[M], D, h, m);
return d;
}
var throttling = 2000;
var spamComments = jQuery('.comment')
.filter((i, c) => jQuery(c).find('.comment_byline > a')[0].href == spamUserUrl)
.filter((i, c) => jQuery(c).find('.timestamp > time')[0].title != "")
.filter((i, c) => titleToDate(jQuery(c).find('.timestamp > time')[0].title) > spamDate);
console.log("Found " + spamComments.length + " comments to delete");
spamComments.each((i, c) => {
c.style.border = '5px red dotted';
setTimeout(() => {
console.log("deleting 💩", c);
jQuery(c).find('.js-delete-comment').click();
jQuery('.confirm-button')[0].click();
}, i * throttling);
});
請聯系Podio支持。 我們有解決方案來阻止這種情況:)
作為記錄,我們確實聯系了Podio支持,這一次他們很熱心,並表示問題已解決。 我不知道他們該如何處理,但此后我們還沒有收到垃圾郵件。 謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.