亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 django-twilio 包偽造保護正在創建禁止的 403 錯誤

使用 django-twilio 包偽造保護正在創建禁止的 403 錯誤

侃侃無極 2022-06-22 17:41:00
我正在使用 django-twilio 包進行防偽保護django-twilio forgery protection docs我有一個 django 短信應用程序,它既可以直接通過我的手機信使發送自動消息,也可以在登錄時從我的網站發送。當 DJANGO_TWILIO_FORGERY_PROTECTION = False 時,使用我的 django 短信應用程序的兩個平臺都可以工作。當 DJANGO_TWILIO_FORGERY_PROTECTION = True 時,只有手機信使工作,網站得到 403 Forbidden。如何在保持盡可能多的安全性并保持相同的應用程序對手機信使和網站正常運行的同時解決此問題。我知道問題與@twilio_view 裝飾器有關發送-text.html    <form action="{% url 'text-send' %}" enctype="multipart/form-data" method="POST">    {% csrf_token %}    <input type="text" name="Body" required>    <input type="submit" >    </form>這是我的短信應用程序:@twilio_viewdef sendtext(request, reviewpk):    if request.method == "POST":        ACCOUNT_SID = settings.TWILIO_ACCOUNT_SID        AUTH_TOKEN = settings.TWILIO_AUTH_TOKEN        client = Client(ACCOUNT_SID, AUTH_TOKEN)        message_body = request.POST['Body']        client.messages.create(           to= "+13231342344",           from_="+14571342764",           body=message_body         )        return confirm_things(request)def confirm_things(request):      if 'HTTP_X_TWILIO_SIGNATURE' in request.META:        resp = MessagingResponse()        resp.message("good job message was sent")        return HttpResponse(str(resp), content_type='text/xml')              return HttpResponseRedirect(reverse('dashboard'))  urls.pyurlpatterns = [    path('textsend/', views.sendtext, name='text-send'),    path('dashboard/', views.dash, name='dash'),]
查看完整描述

2 回答

?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

Twilio 開發人員布道者在這里。

DJANGO_TWILIO_FORGERY_PROTECTION = True應該只用于來自 Twilio 的 webhook 請求。

您應該使用常規會話(或其他)身份驗證以及現有的 CSRF 保護來驗證您的用戶表單提交。基本上,您不應該使用@twilio_view任何不響應 Twilio 的控制器操作。


查看完整回答
反對 回復 2022-06-22
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

嘗試包括 @csrf_exempt 裝飾器


導入它 from django.views.decorators.csrf import csrf_exempt


然后在函數中


@csrf_exempt

@twilio_view

def sendtext(request, reviewpk):

    if request.method == "POST":

        ACCOUNT_SID = settings.TWILIO_ACCOUNT_SID

        AUTH_TOKEN = settings.TWILIO_AUTH_TOKEN

        client = Client(ACCOUNT_SID, AUTH_TOKEN)


        message_body = request.POST['Body']

        client.messages.create(

           to= "+13231342344",

           from_="+14571342764",

           body=message_body

         )

        return confirm_things(request)

希望這可以幫助!


查看完整回答
反對 回復 2022-06-22
  • 2 回答
  • 0 關注
  • 91 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號