Хувийн сүлжээтэй хэзээ ч харилцдаггүй нийтийн маягт ч хувийн сүлжээ үнэлэх ёстой өгөгдлийг үүсгэдэг. Туннель нь хэн хэнд холбогдохыг л өөрчилдөг. Татаж авсны дараах бүхэн импортын шийдвэр бөгөөд энэ нь хувийн талд хамаарна. Энэхүү гарын авлага нэг илгээлтийг хөтөчөөс эхлээд бүртгэгдсэн дотоод бүртгэл хүртэл дагадаг.

Илгээлт газардах цэгээс эхэл

Хөтөч нийтийн төгсгөлийн цэг рүү илгээдэг бөгөөд энэ нь хяналттай хүлээн авалтын санд нэг мөр бичиж, баталгаажуулалтаас өөр юу ч буцаадаггүй. Тэр сан бол шилжүүлэх цэг бөгөөд нийтийн түвшин бичиж болох цорын ганц зүйл байх ёстой. Түүхий өгөгдлийг тэнд өөрчлөхгүйгээр, ирсэн цаг болон тогтвортой бүртгэлийн танигчтай хамт хадгал.

Дараа нь хувийн ажилтан туннелиар хүлээгдэж буй мөрүүдийг татаж аваад мөр бүртэй юу хийхийг шийддэг. Тэр өөрийн танигчаар ажилладаг бөгөөд энэ нь дараагийн хэсгийн сэдэв юм.

curl --silent --fail \
  --cert /etc/importer/client.crt --key /etc/importer/client.key \
  "https://intake.corp.internal/api/pending?limit=20" \
  -o /var/lib/importer/pending.json

Импортлогчид хэрэгтэй эрх мэдлийг л өг

Нийтийн вэб процесс ба дотоод аппликейшн руу бичдэг танигч нь хоёр өөр субъект байх ёстой. Нийтийн сервер маягтын өгөгдлийг хүргэх ёстой учраас л дотоод удирдлага хэрэггүй бөгөөд хоёр талд нэг хуваалцсан бүртгэл байх нь аливаа вэбийн алдааг дотоод бичилт болгоно. Ажилтанд өөрийн итгэмжлэлийг олгож, нэг импортын үйлдэлд хязгаарлаж, аль субъект импорт бүрийг гүйцэтгэснийг бүртгэ. Яг тэр хуваагдал нь туннелийн хил хязгаарыг чимэглэл биш, утга учиртай болгодог.

Ажилтан ямар эх сурвалжаас уншиж болохыг ч хязгаарла. Хэрэв хэрэгжүүлэлт дараалал эсвэл шилжүүлэх үйлчилгээ ашигладаг бол тэр үйлчилгээ өөрийн нэвтрүүлэлт, хандалтын бодлогыг хадгална, учир нь VPN өгөгдлийн доторх юуг ч нэвтрүүлдэггүй.

Богино хугацааны функц ч мөн адил хяналтаас чөлөөлөгдөхгүй. Ажиллаж байх хугацаанд түүний сүлжээний байрлал, итгэмжлэл нь эрх мэдэл олгосоор байх бөгөөд богино наслалт нь цонхыг л нарийсгана. Наслалт нь танигч ямар үйлдэл хийж болохыг шийдэхийг орлохгүй.

Дотоод юу ч өөрчлөгдөхөөс өмнө баталгаажуул

Нийтийн маягтын талбарууд нь эсрэг нь нотлогдох хүртэл халдагчийн хяналтад байдаг текст бөгөөд OWASP-ийн оролтыг баталгаажуулах заавар яг энэ шалтгаанаар серверийн урсгалыг итгэмжлэгдэхгүй эх сурвалжид тооцдог. Шифрлэгдсэн дамжуулалт нь байтууд бүрэн бүтэн ирснийг хэлнэ, зөвшөөрөгдөх хүсэлтийг дүрсэлснийг биш. Аливаа онцгой эрхтэй алхмын өмнө задлан шинжилж, баталгаажуул, ингэснээр муу мөр үйлдэл хийж чадах кодын замд хүрэхгүй.

Зөвшөөрөгдөх талбарууд, тэдгээрийн формат, хэмжээ, мөрдөгдөх бизнесийн дүрмийг тодорхойл. Огноо нь зөв бүтэцтэй байлаа ч хүссэн үйлдэлд буруу байж болох бөгөөд дотоод бүртгэл эсвэл зөвшөөрлийн төлөвийг нэрлэсэн өгөгдөл нь тэдгээрийн аль нэгийг өөртөө олгож чадахгүй байх ёстой.

Татгалзсан мөрүүдийг засварыг таамаглахын оронд хяналтын үр дүн рүү илгээ, эсвэл тэдгээрийг шелл эсвэл түүхий өгөгдлийн сангийн интерфэйс рүү дамжуулж болохгүй. Бүртгэлийн танигч болон бүтэлгүйтсэн дүрмийг бүртгэ, өргөдөл гаргагчийн бичсэн бүх талбарыг биш.

Нэг үйлдэл дээр дахин оролдлогын цэг үүсгэ

Хэрэв эхний баталгаажуулалт алдагдсанаас submission-1042 бүртгэлийг хоёр удаа татвал ажилтанд эх бүртгэл болон түүний бүртгэгдсэн үр дүнг таних тогтвортой арга хэрэгтэй. Ажлыг нэг удаа ажиллуулдаг хуваарь мөр бүр нэг удаа хэрэглэгдсэнийг батлахгүй. Давхар хүргэлт нь хэвийн бөгөөд дизайн үүнийг шингээх ёстой.

Дотоод аппликейшны өөрийн гүйлгээ болон давхардлыг шийдвэрлэх механизмыг ашиглаж, эх танигч, үр дүн, баталгаажуулалтыг нэг уялдаатай дараалалд байлга. Зоригдсон үйлдэл бүртгэгдсэн эсвэл тогтвортойгоор оноогдсоны дараа л баталгаажуулж, байтууд татагдсан гэсэн шалтгаанаар хүлээн авалтын мөрийг хэзээ ч устгаж болохгүй.

Дараа нь үүнийг гурван бэлдмэл өгөгдлөөр нотол: хүчинтэй мөр, буруу бүтэцтэй мөр, мөн ижил хяналттай эх танигч хоёр удаа хүргэгдсэн тохиолдол. Тус бүр нь ажилтны ашигладаг ижил төгсгөлийн цэгээр дамждаг.

for f in fixtures/valid-submission.json fixtures/bad-date.json; do
  curl --silent --fail --cert /etc/importer/client.crt \
    -X POST --data @"$f" https://intake.corp.internal/api/records
done
curl --silent --fail --cert /etc/importer/client.crt \
  -X POST --data @fixtures/valid-submission.json https://intake.corp.internal/api/records

Эхний хоёр мөр өөр дотоод төлөвт дуусах ёстой бөгөөд гурав дахь нь хоёр дахьыг үүсгэхийн оронд тэр эх бүртгэлд аль хэдийн бүртгэгдсэн танигчийг буцаах ёстой. Бусад бүх үр дүн нь импорт одоо ч давтагдах боломжгүй гэсэн үг.

Холбоотой нийтлэлүүд