Ðеб-безопаÑноÑÑÑ
ÐезопаÑноÑÑÑ ÑайÑа ÑÑебÑÐµÑ Ð±Ð´Ð¸ÑелÑноÑÑи во вÑÐµÑ Ð°ÑпекÑÐ°Ñ Ð´Ð¸Ð·Ð°Ð¹Ð½Ð° и иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑайÑа. ÐÑа Ð²Ð²Ð¾Ð´Ð½Ð°Ñ ÑÑаÑÑÑ Ð½Ðµ ÑÐ´ÐµÐ»Ð°ÐµÑ Ð¸Ð· Ð²Ð°Ñ Ð³ÑÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи веб-ÑайÑа, но она Ð¿Ð¾Ð¼Ð¾Ð¶ÐµÑ Ð²Ð°Ð¼ понÑÑÑ, оÑкÑда пÑÐ¸Ñ Ð¾Ð´ÑÑ ÑгÑозÑ, и ÑÑо Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑделаÑÑ, ÑÑÐ¾Ð±Ñ ÑкÑепиÑÑ ÑÐ²Ð¾Ñ Ð²ÐµÐ±-пÑиложение пÑоÑив наиболее ÑаÑпÑоÑÑÑанÑннÑÑ Ð°Ñак.
| УÑловиÑ: | ÐлеменÑаÑÐ½Ð°Ñ ÐºÐ¾Ð¼Ð¿ÑÑÑеÑÐ½Ð°Ñ Ð³ÑамоÑноÑÑÑ |
|---|---|
| ЦелÑ: | ÐонÑÑÑ ÑамÑе ÑаÑпÑоÑÑÑанÑннÑе ÑгÑÐ¾Ð·Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи веб-пÑиложений. Ð ÑÑо Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑделаÑÑ, ÑÑÐ¾Ð±Ñ ÑменÑÑиÑÑ ÑиÑк взлома ваÑего ÑайÑа. |
ЧÑо Ñакое безопаÑноÑÑÑ ÑайÑа?
ÐнÑеÑÐ½ÐµÑ - опаÑное меÑÑо! ÐÑ ÑегÑлÑÑно ÑлÑÑим о Ñом, ÑÑо веб-ÑайÑÑ ÑÑановÑÑÑÑ Ð½ÐµÐ´Ð¾ÑÑÑпнÑми из-за аÑак Ñипа оÑказано в обÑлÑживании, или оÑобÑажение изменÑнной (и ÑаÑÑо повÑеждÑнной) инÑоÑмаÑии на Ð¸Ñ ÑÑÑаниÑÐ°Ñ . РдÑÑÐ³Ð¸Ñ ÑлÑÑаÑÑ Ð¼Ð¸Ð»Ð»Ð¸Ð¾Ð½Ñ Ð¿Ð°Ñолей, адÑеÑов ÑлекÑÑонной поÑÑÑ Ð¸ даннÑе кÑедиÑнÑÑ ÐºÐ°ÑÑ ÑÑановилиÑÑ Ð¾Ð±ÑедоÑÑÑпнÑми, подвеÑÐ³Ð°Ñ Ð¿Ð¾Ð»ÑзоваÑелей веб-ÑайÑа лиÑÐ½Ð¾Ð¼Ñ ÑмÑÑÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ к ÑинанÑовÑм ÑиÑкам.
Ð¦ÐµÐ»Ñ Ð²ÐµÐ±-безопаÑноÑÑи заклÑÑаеÑÑÑ Ð² пÑедоÑвÑаÑении ÑÑÐ¸Ñ (или дÑÑÐ³Ð¸Ñ ) видов аÑак. Ðолее ÑоÑмалÑнÑм опÑеделением веб-безопаÑноÑÑи ÑвлÑеÑÑÑ: ÑпоÑÐ¾Ð±Ñ Ð·Ð°ÑиÑÑ Ð²ÐµÐ±-ÑайÑов Ð¾Ñ Ð½ÐµÑанкÑиониÑованного доÑÑÑпа, иÑполÑзованиÑ, изменениÑ, ÑниÑÑÐ¾Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ наÑÑÑÐµÐ½Ð¸Ñ ÑабоÑÑ.
ÐÐ»Ñ ÑÑÑекÑивной безопаÑноÑÑи веб-ÑайÑа Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑделÑÑÑ Ð¾Ñобое внимание к ÑазÑабоÑке вÑего веб-ÑайÑа: к ваÑÐµÐ¼Ñ Ð²ÐµÐ±-пÑиложениÑ, конÑигÑÑаÑии веб-ÑеÑвеÑа, пÑи напиÑании полиÑик ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñолей, а Ñак же кода на ÑÑоÑоне клиенÑа. ХоÑÑ Ð²Ñе ÑÑо звÑÑÐ¸Ñ Ð¾ÑÐµÐ½Ñ Ð·Ð»Ð¾Ð²ÐµÑе, Ñ Ð¾ÑоÑÐ°Ñ Ð½Ð¾Ð²Ð¾ÑÑÑ Ð·Ð°ÐºÐ»ÑÑаеÑÑÑ Ð² Ñом, ÑÑо еÑли Ð²Ñ Ð¸ÑполÑзÑеÑе веб-ÑÑеймвоÑк Ð´Ð»Ñ ÑеÑвеÑной ÑаÑÑи, Ñо он поÑÑи навеÑнÑка обеÑпеÑÐ¸Ñ Â«Ð¿Ð¾ ÑмолÑаниÑ» надÑжнÑе и пÑодÑманнÑе Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ñ Ð·Ð°ÑиÑÑ Ð¾Ñ ÑÑда наиболее ÑаÑпÑоÑÑÑанÑннÑÑ Ð°Ñак. ÐÑÑгие аÑаки можно ÑмÑгÑиÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии ваÑего веб-ÑеÑвеÑа, напÑимеÑ, вклÑÑив HTTPS. ÐаконеÑ, еÑÑÑ Ð¾Ð±ÑедоÑÑÑпнÑе инÑÑÑÑменÑÑ Ð´Ð»Ñ ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑзвимоÑÑей, коÑоÑÑе могÑÑ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð²Ð°Ð¼ опÑеделиÑÑ, еÑли Ð²Ñ Ð´Ð¾Ð¿ÑÑÑили какие-либо оÑевиднÑе оÑибки.
РоÑÑавÑейÑÑ ÑаÑÑи ÑÑой ÑÑаÑÑи Ð¼Ñ ÑаÑÑмоÑÑим более подÑобнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ некоÑоÑÑÑ ÑамÑÑ ÑаÑпÑоÑÑÑанÑннÑÑ ÑгÑÐ¾Ð·Ð°Ñ Ð¸ о пÑоÑÑÑÑ ÑÐ°Ð³Ð°Ñ , коÑоÑÑе Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе пÑедпÑинÑÑÑ, ÑÑÐ¾Ð±Ñ Ð·Ð°ÑиÑиÑÑ Ñвой ÑайÑ.
ÐÑимеÑание: ÐÑо Ð²Ð²Ð¾Ð´Ð½Ð°Ñ ÑÑаÑÑÑ, пÑÐ¸Ð·Ð²Ð°Ð½Ð½Ð°Ñ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð²Ð°Ð¼ задÑмаÑÑÑÑ Ð¾ безопаÑноÑÑи веб-ÑайÑа, но она не ÑвлÑеÑÑÑ Ð¸ÑÑеÑпÑваÑÑей.
УгÑÐ¾Ð·Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи ÑайÑа
Ð ÑÑом Ñазделе пеÑеÑиÑÐ»ÐµÐ½Ñ Ð»Ð¸ÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе из наиболее ÑаÑпÑоÑÑÑанÑннÑÑ ÑгÑоз веб-ÑайÑа и ÑпоÑÐ¾Ð±Ñ Ð¸Ñ ÑÑÑÑанениÑ. ЧиÑаÑ, обÑаÑиÑе внимание на Ñо, наÑколÑко ÑÑпеÑÐ½Ñ ÑгÑозÑ, когда веб-пÑиложение довеÑÑеÑ, либо недоÑÑаÑоÑно паÑаноидалÑно оÑноÑиÑÑÑ Ðº даннÑм, поÑÑÑпаÑÑим из бÑаÑзеÑа.
ÐежÑайÑовÑй ÑкÑипÑинг (XSS)
XSS (Cross-Site Scripting - ÐежÑайÑовÑй ÑкÑипÑинг) ÑÑо ÑеÑмин, иÑполÑзÑемÑй Ð´Ð»Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ñипа аÑак, коÑоÑÑе позволÑÑÑ Ð·Ð»Ð¾ÑмÑÑÐ»ÐµÐ½Ð½Ð¸ÐºÑ Ð²Ð½ÐµÐ´ÑÑÑÑ Ð²ÑедоноÑнÑй код ÑеÑез веб-ÑÐ°Ð¹Ñ Ð² бÑаÑзеÑÑ Ð´ÑÑÐ³Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелей. ÐоÑколÑÐºÑ Ð²Ð½ÐµÐ´ÑÑннÑй код поÑÑÑÐ¿Ð°ÐµÑ Ð² бÑаÑÐ·ÐµÑ Ñ ÑайÑа, он ÑвлÑеÑÑÑ Ð´Ð¾Ð²ÐµÑеннÑм и Ð¼Ð¾Ð¶ÐµÑ Ð²ÑполнÑÑÑ Ñакие дейÑÑвиÑ, как оÑпÑавка авÑоÑизаÑионного Ñайла cookieполÑзоваÑÐµÐ»Ñ Ð·Ð»Ð¾ÑмÑÑленникÑ. Ðогда Ñ Ð·Ð»Ð¾ÑмÑÑленника еÑÑÑ Ñайл cookie, он Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¾Ð¹Ñи на ÑайÑ, как еÑли Ð±Ñ Ð¾Ð½ бÑл полÑзоваÑелем, и ÑделаÑÑ Ð²Ñе, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑ, напÑимеÑ, полÑÑиÑÑ Ð´Ð¾ÑÑÑп к даннÑм кÑедиÑной каÑÑÑ, пÑоÑмоÑÑеÑÑ ÐºÐ¾Ð½ÑакÑнÑе даннÑе или измениÑÑ Ð¿Ð°Ñоли.
ÐÑимеÑание: УÑзвимоÑÑи XSS иÑÑоÑиÑеÑки вÑÑÑеÑалиÑÑ ÑаÑе, Ñем лÑбÑе дÑÑгие Ð²Ð¸Ð´Ñ ÑгÑоз безопаÑноÑÑи.
УÑзвимоÑÑи XSS делÑÑÑÑ Ð½Ð° оÑÑажÑннÑе и Ñ ÑанимÑе, в завиÑимоÑÑи Ð¾Ñ Ñого, как ÑÐ°Ð¹Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ Ð²Ð½ÐµÐ´ÑÑннÑй код в бÑаÑзеÑ.
-
ÐÑÑажÑÐ½Ð½Ð°Ñ XSS-ÑÑзвимоÑÑÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ, когда полÑзоваÑелÑÑкий конÑенÑ, коÑоÑÑй пеÑедаÑÑÑÑ Ð½Ð° ÑеÑвеÑ, немедленно и без изменений возвÑаÑаеÑÑÑ Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² бÑаÑзеÑе. ÐÑбой ÑкÑÐ¸Ð¿Ñ Ð² иÑÑ Ð¾Ð´Ð½Ð¾Ð¼ полÑзоваÑелÑÑком конÑенÑе запÑÑÑиÑÑÑ Ð¿Ñи загÑÑзке новой ÑÑÑаниÑÑ. ÐапÑимеÑ, ÑаÑÑмоÑÑим ÑÑÑÐ¾ÐºÑ Ð¿Ð¾Ð¸Ñка по ÑайÑÑ, в коÑоÑой поиÑковÑе Ñлова закодиÑÐ¾Ð²Ð°Ð½Ñ ÐºÐ°Ðº паÑамеÑÑÑ URL, и ÑÑи Ñлова оÑобÑажаÑÑÑÑ Ð²Ð¼ÐµÑÑе Ñ ÑезÑлÑÑаÑами. ÐлоÑмÑÑленник Ð¼Ð¾Ð¶ÐµÑ ÑоздаÑÑ Ð¿Ð¾Ð¸ÑковÑÑ ÑÑÑлкÑ, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ ÑодеÑжаÑÑ Ð²ÑедоноÑнÑй ÑкÑÐ¸Ð¿Ñ Ð² каÑеÑÑве паÑамеÑÑа (напÑимеÑ:
https://developer.mozilla.org?q=beer<script%20src="/proxy/example.com/tricky.js"></script>) и пеÑеÑлаÑÑ ÐµÐ³Ð¾ дÑÑÐ³Ð¾Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¿Ð¾ ÑлекÑÑонной поÑÑе. ÐÑли Ñелевой полÑзоваÑÐµÐ»Ñ ÐºÐ»Ð¸ÐºÐ½ÐµÑ Ð¿Ð¾ ÑÑой «инÑеÑеÑной ÑÑÑлке», Ñо ÑкÑÐ¸Ð¿Ñ Ð²ÑполниÑÑÑ Ð¿Ñи оÑобÑажении ÑезÑлÑÑаÑов поиÑка. Ðак Ð¼Ñ Ñже говоÑили, злоÑмÑÑленник Ñаким обÑазом полÑÑÐ°ÐµÑ Ð²ÑÑ Ð¸Ð½ÑоÑмаÑиÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ÑÑ ÐµÐ¼Ñ Ð´Ð»Ñ Ð²Ñ Ð¾Ð´Ð° на ÑÐ°Ð¹Ñ Ð² каÑеÑÑве Ñелевого полÑзоваÑелÑ, поÑенÑиалÑного ÑовеÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾ÐºÑпок Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ полÑзоваÑÐµÐ»Ñ Ð¸Ð»Ð¸ полÑÑÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ конÑакÑной инÑоÑмаÑии. -
ÐоÑÑоÑÐ½Ð½Ð°Ñ ÑÑзвимоÑÑÑ XSS возникаеÑ, когда вÑедоноÑнÑй ÑкÑÐ¸Ð¿Ñ Ñ ÑаниÑÑÑ Ð½Ð° веб-ÑайÑе, а заÑем Ñнова оÑобÑажаеÑÑÑ Ð±ÐµÐ· изменений, ÑÑÐ¾Ð±Ñ Ð´ÑÑгие полÑзоваÑели могли вÑполнÑÑÑ ÐµÐ³Ð¾ неволÑно.
ÐапÑимеÑ, доÑка обÑÑждений, коÑоÑÐ°Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии, ÑодеÑжаÑие неизмененнÑй HTML, Ð¼Ð¾Ð¶ÐµÑ Ñ ÑаниÑÑ Ð²ÑедоноÑнÑй ÑкÑÐ¸Ð¿Ñ Ð¾Ñ Ð·Ð»Ð¾ÑмÑÑленника. Ðогда комменÑаÑии оÑобÑажаÑÑÑÑ, ÑкÑÐ¸Ð¿Ñ Ð²ÑполнÑеÑÑÑ Ð¸ Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑпÑавиÑÑ Ð·Ð»Ð¾ÑмÑÑÐ»ÐµÐ½Ð½Ð¸ÐºÑ Ð¸Ð½ÑоÑмаÑиÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ÑÑ Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к ÑÑÑÑной запиÑи полÑзоваÑелÑ. ÐÑака Ñакого Ñода ÑÑезвÑÑайно попÑлÑÑна и моÑна, поÑÐ¾Ð¼Ñ ÑÑо злоÑмÑÑленник Ð¼Ð¾Ð¶ÐµÑ Ð´Ð°Ð¶Ðµ не имеÑÑ Ð¿ÑÑмого оÑноÑÐµÐ½Ð¸Ñ Ðº жеÑÑвам.
ХоÑÑ Ð´Ð°Ð½Ð½Ñе из запÑоÑов POST или GET ÑвлÑÑÑÑÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ ÑаÑпÑоÑÑÑанÑннÑм иÑÑоÑником ÑÑзвимоÑÑей XSS, лÑбÑе даннÑе из бÑаÑзеÑа поÑенÑиалÑно ÑÑзвимÑ, Ñакие как даннÑе cookie, оÑобÑажаемÑе бÑаÑзеÑом, или полÑзоваÑелÑÑкие ÑайлÑ, коÑоÑÑе загÑÑжаÑÑÑÑ Ð¸ оÑобÑажаÑÑÑÑ.
ÐаилÑÑÑей заÑиÑой Ð¾Ñ ÑÑзвимоÑÑей XSS ÑвлÑеÑÑÑ Ñдаление или оÑклÑÑение лÑбой ÑазмеÑки, коÑоÑÐ°Ñ Ð¿Ð¾ÑенÑиалÑно Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð¸Ð½ÑÑÑÑкÑии по запÑÑÐºÑ ÐºÐ¾Ð´Ð°. ÐÐ»Ñ HTML ÑÑо вклÑÑÐ°ÐµÑ Ñакие ÑлеменÑÑ, как <script>, <object>, <embed> и <link>.
ÐÑоÑеÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелÑÑÐºÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ , ÑÑÐ¾Ð±Ñ Ð¸Ñ Ð½ÐµÐ»ÑÐ·Ñ Ð±Ñло иÑполÑзоваÑÑ Ð´Ð»Ñ Ð·Ð°Ð¿ÑÑка ÑÑенаÑиев или инÑм обÑазом влиÑÑÑ Ð½Ð° вÑполнение ÑеÑвеÑного кода, назÑваеÑÑÑ Ð¾ÑиÑÑкой ввода. Ðногие веб-ÑÑеймвоÑки авÑомаÑиÑеÑки оÑиÑаÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑÑкий ввод Ð¾Ñ HTML-ÑоÑм по ÑмолÑаниÑ.
SQL injection
УÑзвимоÑÑи SQL-инÑекÑий позволÑÑÑ Ð·Ð»Ð¾ÑмÑÑленникам вÑполнÑÑÑ Ð¿ÑоизволÑнÑй код SQL в базе даннÑÑ , позволÑÑ Ð¿Ð¾Ð»ÑÑаÑÑ, изменÑÑÑ Ð¸Ð»Ð¸ ÑдалÑÑÑ Ð´Ð°Ð½Ð½Ñе незавиÑимо Ð¾Ñ ÑазÑеÑений полÑзоваÑелÑ. УÑпеÑÐ½Ð°Ñ Ð¸Ð½ÑекÑÐ¸Ð¾Ð½Ð½Ð°Ñ Ð°Ñака Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´Ð´ÐµÐ»Ð°ÑÑ ÑдоÑÑовеÑениÑ, ÑоздаÑÑ Ð½Ð¾Ð²Ñе ÑдоÑÑовеÑÐµÐ½Ð¸Ñ Ñ Ð¿Ñавами админиÑÑÑаÑоÑа, полÑÑиÑÑ Ð´Ð¾ÑÑÑп ко вÑем даннÑм на ÑеÑвеÑе или ÑниÑÑожиÑÑ / измениÑÑ Ð´Ð°Ð½Ð½Ñе, ÑÑÐ¾Ð±Ñ ÑделаÑÑ Ð¸Ñ Ð½ÐµÐ¿ÑигоднÑми Ð´Ð»Ñ Ð¸ÑполÑзованиÑ.
Ð¢Ð¸Ð¿Ñ Ð²Ð½ÐµÐ´ÑÐµÐ½Ð¸Ñ SQL вклÑÑаÑÑ Ð²Ð½ÐµÐ´Ñение SQL на оÑнове оÑибок, внедÑение SQL на оÑнове логиÑеÑÐºÐ¸Ñ Ð¾Ñибок и внедÑение SQL на оÑнове вÑемени.
ÐÑа ÑÑзвимоÑÑÑ Ð¿ÑиÑÑÑÑÑвÑеÑ, еÑли полÑзоваÑелÑÑкий ввод, коÑоÑÑй пеÑедаÑÑÑÑ Ð² базовÑй опеÑаÑÐ¾Ñ SQL, Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ ÑмÑÑл опеÑаÑоÑа. ÐапÑимеÑ, ÑледÑÑÑий код пÑедназнаÑен Ð´Ð»Ñ Ð¿ÐµÑеÑиÑÐ»ÐµÐ½Ð¸Ñ Ð²ÑÐµÑ Ð¿Ð¾Ð»ÑзоваÑелей Ñ Ð¾Ð¿ÑеделÑннÑм именем (userName), коÑоÑое бÑло пÑедоÑÑавлено из ÑоÑÐ¼Ñ HTML:
statement = "SELECT * FROM users WHERE name = '" + userName + "';"
ÐÑли полÑзоваÑÐµÐ»Ñ ÑказÑÐ²Ð°ÐµÑ ÑеалÑное имÑ, опеÑаÑÐ¾Ñ Ð±ÑÐ´ÐµÑ ÑабоÑаÑÑ Ñак, как задÑмано. Ðднако злонамеÑеннÑй полÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ ÑÑого опеÑаÑоÑа SQL на новÑй опеÑаÑÐ¾Ñ Ð² ÑледÑÑÑем пÑимеÑе, пÑоÑÑо Ñказав ÑекÑÑ Ð¿Ð¾Ð»ÑжиÑнÑм ÑÑиÑÑом Ð´Ð»Ñ userName.
SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't';
ÐодиÑиÑиÑованнÑй опеÑаÑÐ¾Ñ ÑоздаÑÑ Ð´ÐµÐ¹ÑÑвиÑелÑнÑй опеÑаÑÐ¾Ñ SQL, коÑоÑÑй ÑдалÑÐµÑ ÑаблиÑÑ Ð¿Ð¾Ð»ÑзоваÑелей и вÑбиÑÐ°ÐµÑ Ð²Ñе даннÑе из ÑаблиÑÑ userinfo (коÑоÑÐ°Ñ ÑаÑкÑÑÐ²Ð°ÐµÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ каждом полÑзоваÑеле). ÐÑо ÑабоÑаеÑ, поÑÐ¾Ð¼Ñ ÑÑо пеÑÐ²Ð°Ñ ÑаÑÑÑ Ð²Ð²ÐµÐ´Ñнного ÑекÑÑа (a ';) завеÑÑÐ°ÐµÑ Ð¸ÑÑ Ð¾Ð´Ð½Ð¾Ðµ ÑÑвеÑждение.
ЧÑÐ¾Ð±Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ñакого Ñода аÑак, Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑбедиÑÑÑÑ, ÑÑо лÑбÑе полÑзоваÑелÑÑкие даннÑе, коÑоÑÑе пеÑедаÑÑÑÑ Ð² запÑÐ¾Ñ SQL, не могÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ Ð¿ÑиÑÐ¾Ð´Ñ Ð·Ð°Ð¿ÑоÑа. Ðдин из ÑпоÑобов ÑделаÑÑ ÑÑо - ÑкÑаниÑоваÑÑ Ð²Ñе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑелÑÑкого ввода, коÑоÑÑе имеÑÑ Ð¾Ñобое знаÑение в SQL.
ÐÑимеÑание: ÐнÑÑÑÑкÑÐ¸Ñ SQL обÑабаÑÑÐ²Ð°ÐµÑ Ñимвол ' как наÑало и ÐºÐ¾Ð½ÐµÑ ÑÑÑокового лиÑеÑала. ÐомеÑÑив обÑаÑнÑÑ ÐºÐ¾ÑÑÑ ÑеÑÑÑ Ð¿ÐµÑед ÑÑим Ñимволом (\ '), Ð¼Ñ ÑкÑаниÑÑем Ñимвол и говоÑим SQL вмеÑÑо ÑÑого ÑÑакÑоваÑÑ ÐµÐ³Ð¾ как Ñимвол (ÑолÑко ÑаÑÑÑ ÑÑÑоки).
Ð ÑледÑÑÑей инÑÑÑÑкÑии Ð¼Ñ ÑкÑаниÑÑем Ñимвол '. ТепеÑÑ SQL бÑÐ´ÐµÑ Ð¸Ð½ÑеÑпÑеÑиÑоваÑÑ Ð¸Ð¼Ñ ÐºÐ°Ðº вÑÑ ÑÑÑокÑ, вÑделеннÑÑ Ð¶Ð¸ÑнÑм ÑÑиÑÑом (ÑÑо дейÑÑвиÑелÑно оÑÐµÐ½Ñ ÑÑÑанное имÑ, но безопаÑное).
SELECT * FROM users WHERE name = 'a\';DROP TABLE users; SELECT * FROM userinfo WHERE \'t\' = \'t';
Ðеб-ÑÑеймвоÑки бÑдÑÑ ÑаÑÑо забоÑиÑÑÑÑ Ð¾ заÑезеÑвиÑованнÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ð°Ñ Ð´Ð»Ñ Ð²Ð°Ñ. Django, напÑимеÑ, гаÑанÑиÑÑеÑ, ÑÑо лÑбÑе полÑзоваÑелÑÑкие даннÑе, пеÑедаваемÑе в набоÑÑ Ð·Ð°Ð¿ÑоÑов (моделÑнÑе запÑоÑÑ), бÑдÑÑ ÑкÑаниÑÑÑÑÑÑ.
ÐÑимеÑание: ÐÑÐ¾Ñ Ñаздел в знаÑиÑелÑной ÑÑепени оÑнован на инÑоÑмаÑии из Wikipedia.
Ðодделка межÑайÑовÑÑ Ð·Ð°Ð¿ÑоÑов (CSRF)
CSRF-аÑаки позволÑÑÑ Ð·Ð»Ð¾ÑмÑÑÐ»ÐµÐ½Ð½Ð¸ÐºÑ Ð²ÑполнÑÑÑ Ð´ÐµÐ¹ÑÑвиÑ, иÑполÑзÑÑ ÑÑÑÑнÑе даннÑе дÑÑгого полÑзоваÑелÑ, без его ведома или ÑоглаÑиÑ.
ÐÑÐ¾Ñ Ñип аÑаки лÑÑÑе вÑего поÑÑниÑÑ Ð½Ð° пÑимеÑе. Ðжон - злоÑмÑÑленник, коÑоÑÑй знаеÑ, ÑÑо опÑеделÑннÑй ÑÐ°Ð¹Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑм, воÑедÑим в ÑиÑÑемÑ, оÑпÑавлÑÑÑ Ð´ÐµÐ½Ñги на ÑказаннÑÑ ÑÑÑÑнÑÑ Ð·Ð°Ð¿Ð¸ÑÑ, иÑполÑзÑÑ HTTP-запÑÐ¾Ñ POST, коÑоÑÑй вклÑÑÐ°ÐµÑ Ð¸Ð¼Ñ ÑÑÑÑной запиÑи и ÑÑÐ¼Ð¼Ñ Ð´ÐµÐ½ÐµÐ³. Ðжон ÑоздаÑÑ ÑоÑмÑ, коÑоÑÐ°Ñ Ð²ÐºÐ»ÑÑÐ°ÐµÑ Ð² ÑÐµÐ±Ñ ÐµÐ³Ð¾ банковÑкие ÑеквизиÑÑ Ð¸ ÑÑÐ¼Ð¼Ñ Ð´ÐµÐ½ÐµÐ³ в виде ÑкÑÑÑÑÑ
полей, и оÑпÑавлÑÐµÑ ÐµÑ Ð¿Ð¾ ÑлекÑÑонной поÑÑе дÑÑгим полÑзоваÑелÑм ÑайÑа (Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ð¹ «ÐÑпÑавиÑÑ», замаÑкиÑованной под ÑÑÑÐ»ÐºÑ Ð½Ð° ÑÐ°Ð¹Ñ Â«Ð±ÑÑÑÑого обогаÑениÑ»).
ÐÑли полÑзоваÑÐµÐ»Ñ Ð½Ð°Ð¶Ð¸Ð¼Ð°ÐµÑ ÐºÐ½Ð¾Ð¿ÐºÑ Ð¾ÑпÑавки, на ÑеÑÐ²ÐµÑ Ð±ÑÐ´ÐµÑ Ð¾ÑпÑавлен HTTP-запÑÐ¾Ñ POST, ÑодеÑжаÑий ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ ÑÑанзакÑии и лÑбÑе ÑÐ°Ð¹Ð»Ñ cookie на ÑÑоÑоне клиенÑа, коÑоÑÑе бÑаÑÐ·ÐµÑ ÑвÑзал Ñ ÑайÑом (добавление ÑвÑзаннÑÑ
Ñайлов cookie ÑайÑа в запÑоÑÑ ÑвлÑеÑÑÑ Ð½Ð¾ÑмалÑнÑм поведением бÑаÑзеÑа). СеÑÐ²ÐµÑ Ð¿ÑовеÑÐ¸Ñ ÑÐ°Ð¹Ð»Ñ cookie и иÑполÑзÑÐµÑ Ð¸Ñ
, ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ, воÑÑл ли полÑзоваÑÐµÐ»Ñ Ð² ÑиÑÑÐµÐ¼Ñ Ð¸ Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ ÑазÑеÑение на ÑовеÑÑение ÑÑанзакÑии.
Ð ÑезÑлÑÑаÑе лÑбой полÑзоваÑелÑ, коÑоÑÑй Ð½Ð°Ð¶Ð¸Ð¼Ð°ÐµÑ ÐºÐ½Ð¾Ð¿ÐºÑ ÐÑпÑавиÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ Ð²Ñ Ð¾Ð´Ð° на ÑоÑговÑй ÑайÑ, ÑовеÑÑÐ°ÐµÑ ÑÑанзакÑиÑ. Ðжон ÑÑановиÑÑÑ Ð±Ð¾Ð³Ð°ÑÑм.
ÐÑимеÑание: Уловка здеÑÑ Ð² Ñом, ÑÑо ÐÐ¶Ð¾Ð½Ñ Ð½Ðµ нÑжен доÑÑÑп к Ñайлам cookie полÑзоваÑÐµÐ»Ñ (или ÑÑÑÑнÑм даннÑм). ÐÑаÑÐ·ÐµÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÑÐ¾Ñ ÑанÑÐµÑ ÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¸ авÑомаÑиÑеÑки вклÑÑÐ°ÐµÑ ÐµÑ Ð²Ð¾ вÑе запÑоÑÑ Ðº ÑооÑвеÑÑÑвÑÑÑÐµÐ¼Ñ ÑеÑвеÑÑ.
Ðдин из ÑпоÑобов пÑедоÑвÑаÑиÑÑ ÑÑÐ¾Ñ Ñип аÑаки - запÑоÑиÑÑ ÑеÑвеÑом запÑоÑÑ POST, ÑодеÑжаÑие ÑекÑеÑ, ÑозданнÑй полÑзоваÑелем Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑеÑного ÑайÑа. СекÑÐµÑ Ð±ÑÐ´ÐµÑ Ð¿ÑедоÑÑавлен ÑеÑвеÑом пÑи оÑпÑавке веб-ÑоÑмÑ, иÑполÑзÑемой Ð´Ð»Ñ Ð¿ÐµÑеводов. Такой подÑ
од не позволÑÐµÑ ÐÐ¶Ð¾Ð½Ñ ÑоздаÑÑ ÑÐ²Ð¾Ñ ÑобÑÑвеннÑÑ ÑоÑмÑ, поÑÐ¾Ð¼Ñ ÑÑо он должен знаÑÑ ÑекÑеÑ, коÑоÑÑй ÑеÑÐ²ÐµÑ Ð¿ÑедоÑÑавлÑÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑ. Ðаже еÑли он ÑÐ·Ð½Ð°ÐµÑ ÑекÑÐµÑ Ð¸ ÑоздаÑÑ ÑоÑÐ¼Ñ Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑеÑного полÑзоваÑелÑ, он болÑÑе не ÑÐ¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑ ÑÑ Ð¶Ðµ ÑоÑÐ¼Ñ Ð´Ð»Ñ Ð°Ñаки на каждого полÑзоваÑелÑ.
Ðеб-ÑÑеймвоÑки ÑаÑÑо вклÑÑаÑÑ Ñакие Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ CSRF.
ÐÑоÑие ÑгÑозÑ
ÐÑÑгие ÑаÑпÑоÑÑÑанÑннÑе аÑаки / ÑÑзвимоÑÑи вклÑÑаÑÑ:
- Clickjacking. Ð ÑÑой аÑаке злоÑмÑÑленник пеÑеÑ
ваÑÑÐ²Ð°ÐµÑ ÐºÐ»Ð¸ÐºÐ¸, пÑедназнаÑеннÑе Ð´Ð»Ñ Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ð³Ð¾ ÑайÑа веÑÑ
него ÑÑовнÑ, и напÑавлÑÐµÑ Ð¸Ñ
на ÑкÑÑÑÑÑ Ð½Ð¸Ð¶Ðµ ÑÑÑаниÑÑ. ÐÑÐ¾Ñ Ð¼ÐµÑод можно иÑполÑзоваÑÑ, напÑимеÑ, Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°ÐºÐ¾Ð½Ð½Ð¾Ð³Ð¾ ÑайÑа банка, но заÑ
ваÑа ÑÑÑÑнÑÑ
даннÑÑ
Ð´Ð»Ñ Ð²Ñ
ода в невидимÑй
<iframe>, конÑÑолиÑÑемÑй злоÑмÑÑленником. Clickjacking Ñакже можно иÑполÑзоваÑÑ Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð·Ð°ÑÑавиÑÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð½Ð°Ð¶Ð°ÑÑ ÐºÐ½Ð¾Ð¿ÐºÑ Ð½Ð° видимом ÑайÑе, но пÑи ÑÑом на Ñамом деле неволÑно нажимаÑÑ ÑовеÑÑенно дÑÑгÑÑ ÐºÐ½Ð¾Ð¿ÐºÑ. РкаÑеÑÑве заÑиÑÑ Ð²Ð°Ñ ÑÐ°Ð¹Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑедоÑвÑаÑиÑÑ Ð²ÑÑÑаивание ÑÐµÐ±Ñ Ð² iframe на дÑÑгом ÑайÑе, ÑÑÑановив ÑооÑвеÑÑÑвÑÑÑие заголовки HTTP. - Denial of Service (DoS). DoS обÑÑно доÑÑигаеÑÑÑ Ð·Ð° ÑÑÑÑ Ð½Ð°Ð²Ð¾Ð´Ð½ÐµÐ½Ð¸Ñ Ñелевого ÑайÑа подделÑнÑми запÑоÑами, Ñак ÑÑо доÑÑÑп к ÑайÑÑ Ð½Ð°ÑÑÑаеÑÑÑ Ð´Ð»Ñ Ð·Ð°ÐºÐ¾Ð½Ð½ÑÑ Ð¿Ð¾Ð»ÑзоваÑелей. ÐапÑоÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¿ÑоÑÑо многоÑиÑленнÑми или по оÑделÑноÑÑи поÑÑеблÑÑÑ Ð±Ð¾Ð»ÑÑие обÑÑÐ¼Ñ ÑеÑÑÑÑов (напÑимеÑ, медленное ÑÑение или загÑÑзка болÑÑÐ¸Ñ Ñайлов). ÐаÑиÑа Ð¾Ñ DoS обÑÑно ÑабоÑаеÑ, вÑÑвлÑÑ Ð¸ блокиÑÑÑ Â«Ð¿Ð»Ð¾Ñ Ð¾Ð¹Â» ÑÑаÑик, пÑопÑÑÐºÐ°Ñ Ð¿Ñи ÑÑом легиÑимнÑе ÑообÑениÑ. ÐÑи ÑÑедÑÑва заÑиÑÑ Ð¾Ð±ÑÑно ÑаÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ñ Ð¿ÐµÑед веб-ÑеÑвеÑом или на нем (они не ÑвлÑÑÑÑÑ ÑаÑÑÑÑ Ñамого веб-пÑиложениÑ).
- Directory Traversal (Файл и ÑаÑкÑÑÑие). Ð ÑÑой аÑаке злоÑмÑÑленник пÑÑаеÑÑÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð´Ð¾ÑÑÑп к ÑаÑÑÑм Ñайловой ÑиÑÑÐµÐ¼Ñ Ð²ÐµÐ±-ÑеÑвеÑа, к коÑоÑÑм Ñ Ð½ÐµÐ³Ð¾ не должно бÑÑÑ Ð´Ð¾ÑÑÑпа. ÐÑа ÑÑзвимоÑÑÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ, когда полÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿ÐµÑедаваÑÑ Ð¸Ð¼ÐµÐ½Ð° Ñайлов, ÑодеÑжаÑие ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñии Ñайловой ÑиÑÑÐµÐ¼Ñ (напÑимеÑ,
../../). РеÑение ÑоÑÑÐ¾Ð¸Ñ Ð² Ñом, ÑÑÐ¾Ð±Ñ Ð¾ÑиÑаÑÑ Ð²Ð²Ð¾Ð´ пеÑед его иÑполÑзованием. - File Inclusion. Ð ÑÑой аÑаке полÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ "ÑлÑÑайно" ÑказаÑÑ Ñайл Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð² даннÑÑ , пеÑедаваемÑÑ Ð½Ð° ÑеÑвеÑ. ÐоÑле загÑÑзки ÑÑÐ¾Ñ Ñайл Ð¼Ð¾Ð¶ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð½Ð° веб-ÑеÑвеÑе или на ÑÑоÑоне клиенÑа (ÑÑо пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº XSS-аÑаке). РеÑение ÑоÑÑÐ¾Ð¸Ñ Ð² Ñом, ÑÑÐ¾Ð±Ñ Ð´ÐµÐ·Ð¸Ð½ÑиÑиÑоваÑÑ Ð²Ð²Ð¾Ð´ пеÑед его иÑполÑзованием.
- ÐнедÑение команд. ÐÑаки Ñ Ð²Ð½ÐµÐ´Ñением команд позволÑÑÑ Ð·Ð»Ð¾ÑмÑÑÐ»ÐµÐ½Ð½Ð¸ÐºÑ Ð²ÑполнÑÑÑ Ð¿ÑоизволÑнÑе ÑиÑÑемнÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð² опеÑаÑионной ÑиÑÑеме Ñ Ð¾ÑÑа. РеÑение ÑоÑÑÐ¾Ð¸Ñ Ð² Ñом, ÑÑÐ¾Ð±Ñ Ð´ÐµÐ·Ð¸Ð½ÑиÑиÑоваÑÑ Ð²Ð²Ð¾Ð´Ð¸Ð¼Ñе полÑзоваÑелем даннÑе до Ñого, как Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ Ð² ÑиÑÑемнÑÑ Ð²ÑÐ·Ð¾Ð²Ð°Ñ .
ÐолнÑй ÑпиÑок ÑгÑоз безопаÑноÑÑи веб-ÑайÑов Ñм. Category: Web security exploits (Wikipedia) и Category: Attack (Open Web Application Security Project).
ÐеÑколÑко клÑÑевÑÑ ÑообÑений
ÐоÑÑи вÑе ÑкÑплойÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи, опиÑаннÑе в пÑедÑдÑÑÐ¸Ñ ÑÐ°Ð·Ð´ÐµÐ»Ð°Ñ , ÑÑпеÑнÑ, когда веб-пÑиложение довеÑÑÐµÑ Ð´Ð°Ð½Ð½Ñм из бÑаÑзеÑа. ЧÑо Ð±Ñ Ð²Ñ Ð½Ð¸ делали Ð´Ð»Ñ Ð¿Ð¾Ð²ÑÑÐµÐ½Ð¸Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи Ñвоего веб-ÑайÑа, Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð´ÐµÐ·Ð¸Ð½ÑиÑиÑоваÑÑ Ð²Ñе даннÑе, иÑÑ Ð¾Ð´ÑÑие Ð¾Ñ Ð¿Ð¾Ð»ÑзоваÑелей, пÑежде Ñем они бÑдÑÑ Ð¾ÑобÑажаÑÑÑÑ Ð² бÑаÑзеÑе, иÑполÑзоваÑÑÑÑ Ð² запÑоÑÐ°Ñ SQL или пеÑедаваÑÑÑÑ Ð² вÑзов опеÑаÑионной ÑиÑÑÐµÐ¼Ñ Ð¸Ð»Ð¸ Ñайловой ÑиÑÑемÑ.
ÐÑедÑпÑеждение:
Ðнимание! СамÑй важнÑй ÑÑок, коÑоÑÑй Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе извлеÑÑ Ð¾ безопаÑноÑÑи веб-ÑайÑов: никогда не довеÑÑйÑе даннÑм из бÑаÑзеÑа. ÐÑо вклÑÑаеÑ, помимо пÑоÑего, даннÑе в паÑамеÑÑаÑ
URL-адÑеÑов запÑоÑов GET, запÑоÑов POST, заголовков HTTP и Ñайлов cookie, а Ñакже Ñайлов, загÑÑженнÑÑ
полÑзоваÑелем. ÐÑегда пÑовеÑÑйÑе и дезинÑиÑиÑÑйÑе вÑе вÑ
одÑÑие даннÑе. ÐÑегда пÑедполагайÑе Ñ
ÑдÑее!
ÐÑ Ð¼Ð¾Ð¶ÐµÑе пÑедпÑинÑÑÑ ÑÑд дÑÑÐ³Ð¸Ñ ÐºÐ¾Ð½ÐºÑеÑнÑÑ Ñагов:
- ÐÑполÑзÑйÑе более ÑÑÑекÑивное ÑпÑавление паÑолÑми. ÐооÑÑÑйÑе ÑегÑлÑÑнÑÑ ÑÐ¼ÐµÐ½Ñ Ð½Ð°Ð´ÑжнÑÑ Ð¿Ð°Ñолей. РаÑÑмоÑÑиÑе возможноÑÑÑ Ð´Ð²ÑÑ ÑакÑоÑной аÑÑенÑиÑикаÑии Ð´Ð»Ñ Ð²Ð°Ñего ÑайÑа, ÑÑÐ¾Ð±Ñ Ð² дополнение к паÑÐ¾Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑл ввеÑÑи дÑÑгой код аÑÑенÑиÑикаÑии (обÑÑно ÑоÑ, коÑоÑÑй доÑÑавлÑеÑÑÑ ÑеÑез какое-Ñо ÑизиÑеÑкое обоÑÑдование, коÑоÑое бÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ ÑолÑко полÑзоваÑелÑ, напÑимеÑ, код в SMS, оÑпÑавленном на его ÑелеÑон).
- ÐаÑÑÑойÑе Ñвой веб-ÑеÑÐ²ÐµÑ Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ HTTPS и HTTP Strict Transport Security (HSTS). HTTPS ÑиÑÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе, пеÑедаваемÑе Ð¼ÐµÐ¶Ð´Ñ Ð²Ð°Ñим клиенÑом и ÑеÑвеÑом. ÐÑо гаÑанÑиÑÑеÑ, ÑÑо ÑÑÑÑнÑе даннÑе Ð´Ð»Ñ Ð²Ñ
ода, ÑÐ°Ð¹Ð»Ñ cookie, даннÑе запÑоÑов
POSTи инÑоÑмаÑÐ¸Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° не бÑдÑÑ Ð»ÐµÐ³ÐºÐ¾ доÑÑÑÐ¿Ð½Ñ Ð´Ð»Ñ Ð·Ð»Ð¾ÑмÑÑленников. - СледиÑе за наиболее попÑлÑÑнÑми ÑгÑозами (ÑекÑÑий ÑпиÑок OWASP Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð·Ð´ÐµÑÑ) и в пеÑвÑÑ Ð¾ÑеÑÐµÐ´Ñ ÑÑÑÑанÑйÑе наиболее ÑаÑпÑоÑÑÑанÑннÑе ÑÑзвимоÑÑи.
- ÐÑполÑзÑйÑе инÑÑÑÑменÑÑ ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑзвимоÑÑей, ÑÑÐ¾Ð±Ñ Ð²ÑполниÑÑ Ð°Ð²ÑомаÑиÑеÑкое ÑеÑÑиÑование безопаÑноÑÑи на ваÑем ÑайÑе. Ðозже Ð²Ð°Ñ Ð¾ÑÐµÐ½Ñ ÑÑпеÑнÑй веб-ÑÐ°Ð¹Ñ Ð¼Ð¾Ð¶ÐµÑ Ñакже обнаÑÑживаÑÑ Ð¾Ñибки, пÑÐµÐ´Ð»Ð°Ð³Ð°Ñ Ð²Ð¾Ð·Ð½Ð°Ð³Ñаждение за обнаÑÑжение оÑибок, как ÑÑо Ð´ÐµÐ»Ð°ÐµÑ Ð·Ð´ÐµÑÑ Mozilla.
- Ð¥ÑаниÑе и оÑобÑажайÑе ÑолÑко Ñе даннÑе, коÑоÑÑе вам нÑжнÑ. ÐапÑимеÑ, еÑли ваÑи полÑзоваÑели Ð´Ð¾Ð»Ð¶Ð½Ñ Ñ ÑаниÑÑ ÐºÐ¾Ð½ÑиденÑиалÑнÑÑ Ð¸Ð½ÑоÑмаÑиÑ, ÑакÑÑ ÐºÐ°Ðº даннÑе кÑедиÑной каÑÑÑ, оÑобÑажайÑе ÑаÑÑÑ Ð½Ð¾Ð¼ÐµÑа каÑÑÑ ÑолÑко Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð¾Ð½ мог бÑÑÑ Ð¸Ð´ÐµÐ½ÑиÑиÑиÑован полÑзоваÑелем, и недоÑÑаÑоÑно, ÑÑÐ¾Ð±Ñ ÐµÐ³Ð¾ мог ÑкопиÑоваÑÑ Ð·Ð»Ð¾ÑмÑÑленник и иÑполÑзоваÑÑ Ð½Ð° дÑÑгом ÑайÑе. СамÑй ÑаÑпÑоÑÑÑанÑннÑй Ñаблон в наÑÑоÑÑее вÑÐµÐ¼Ñ - оÑобÑажение ÑолÑко поÑÐ»ÐµÐ´Ð½Ð¸Ñ 4 ÑиÑÑ Ð½Ð¾Ð¼ÐµÑа кÑедиÑной каÑÑÑ.
Ðеб-ÑÑеймвоÑки могÑÑ Ð¿Ð¾Ð¼Ð¾ÑÑ ÑмÑгÑиÑÑ Ð¼Ð½Ð¾Ð³Ð¸Ðµ из наиболее ÑаÑпÑоÑÑÑанÑннÑÑ ÑÑзвимоÑÑей.
РезÑме
Ð ÑÑой ÑÑаÑÑе обÑÑÑнÑеÑÑÑ ÐºÐ¾Ð½ÑепÑÐ¸Ñ Ð²ÐµÐ±-безопаÑноÑÑи и некоÑоÑÑе из наиболее ÑаÑпÑоÑÑÑанÑннÑÑ ÑгÑоз, Ð¾Ñ ÐºÐ¾ÑоÑÑÑ Ð²Ð°Ñ Ð²ÐµÐ±-ÑÐ°Ð¹Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ пÑÑаÑÑÑÑ Ð·Ð°ÑиÑиÑÑÑÑ. Самое главное, Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÑÑ, ÑÑо веб-пÑиложение не Ð¼Ð¾Ð¶ÐµÑ Ð´Ð¾Ð²ÐµÑÑÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ð¼ даннÑм из веб-бÑаÑзеÑа. ÐÑе полÑзоваÑелÑÑкие даннÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾ÑиÑÐµÐ½Ñ Ð¿ÐµÑед оÑобÑажением или иÑполÑзованием в SQL-запÑоÑÐ°Ñ Ð¸ вÑÐ·Ð¾Ð²Ð°Ñ Ñайловой ÑиÑÑемÑ.
ÐÑой ÑÑаÑÑÑй Ð²Ñ Ð¿Ð¾Ð´Ð¾Ñли к конÑÑ ÑÑого модÑлÑ, Ð¾Ñ Ð²Ð°ÑÑваÑÑего ваÑи пеÑвÑе Ñаги в пÑогÑаммиÑовании на ÑÑоÑоне ÑеÑвеÑа. ÐÑ Ð½Ð°Ð´ÐµÐµÐ¼ÑÑ, ÑÑо вам понÑавилоÑÑ Ð¸Ð·ÑÑаÑÑ ÑÑи ÑÑндаменÑалÑнÑе конÑепÑии, и ÑепеÑÑ Ð²Ñ Ð³Ð¾ÑÐ¾Ð²Ñ Ð²ÑбÑаÑÑ Ð²ÐµÐ±-плаÑÑоÑÐ¼Ñ Ð¸ наÑаÑÑ Ð¿ÑогÑаммиÑоваÑÑ.