Layer Cake болон com_weblinks Joomla. Хакерууд болон нэмэлтүүд Бохир вэб холбоосууд php


Вэб сайтын админ хэсэгт үндсэн Weblinks бүрэлдэхүүн хэсэг хэрхэн ажилладагийг харан бүрэлдэхүүн хэсгүүдийг судалж эхэлцгээе. Вэб сайтын энэ хэсэгт ердийн зүйл болох энэхүү бүрэлдэхүүн хэсэг нь нийтлэл, хэрэглэгчид, модулиудыг удирдахад зориулагдсан бусад бүрэлдэхүүн хэсгүүдтэй маш төстэй юм.

Энэ бүрэлдэхүүн хэсгийн програмын файлуудыг доор жагсаав. Эдгээр бүх файлууд хавтсанд байрладаг администратор/components/com_weblinks. Энэ бүлгийн үлдсэн хугацаанд өөрөөр заагаагүй бол бүх Weblinks бүрэлдэхүүн файлын нэрсийг энэ эхлэл хавтастай холбоотой гэж үзнэ. Ихэнх файлууд нь MVC загварын дагуу зохион байгуулагдсан байдаг. Тодруулбал, бүх харах файлууд нь харагдацын дэд хавтсанд, бүх үндсэн загвар болон хянагч файлууд нь загварууд болон контроллеруудын дэд хавтасанд тус тус байдаг. Тэдгээрийг суулгац, тохиргоо болон туслах файлуудаар нэмж оруулсан болно.

index.html файлуудаас бусад Weblinks бүрэлдэхүүн хэсгийн захиргааны хэсгийн файлууд

  • controllers/weblink.php - Нэг вэб холбоос хянагчийг засварлах үндсэн хянагч
  • controllers/weblinks.php - Хянагчийг эмхэтгэх, вэб холбоосын жагсаалтыг Weblinks Manager дэлгэц дээр харуулах үндсэн хянагч.
  • helpers/weblinks.php - Удирдлага болон харагдацад хэрэглэгддэг төрөл бүрийн аргуудыг өгдөг
  • models/fields/ordering.php - Weblinks Manager дэлгэц дээр вэб холбоос захиалгын баганыг харуулсан JformField загвар
  • models/forms/weblink.xml - Jform-Model Field ангид оролтын талбар бүхий маягтыг байрлуулах, дэлгэцэн дээрх вэб холбоосыг засварлахад ашигладаг XML файл.
  • models/weblink.php - Нэг дэлгэцийн хэлбэрийн вэб холбоосын загварт зориулсан загвар
  • models/weblinks.php - Менежерийн дэлгэцийн маягтын загвар Вэб холбоосын загвар
  • sql/install.mysql.utf8.sql - Суулгах явцад вэб холбоосын хүснэгт үүсгэх SQL файл
  • sql/uninstall.mysql.ut8.sql - Суулгах явцад вэб холбоосын хүснэгтийг устгах SQL файл
  • tables/weblink.php - Model классыг өгнө
  • views/weblink/tmpl/edit_metadata.php - Вэб холбоосын мета өгөгдлийг засварлах эх байршлын файл

Вэб холбоосын бүрэлдэхүүн хэсгийн захиргааны хэсэг

  • views/weblink/tmpl/edit_params.php - Ганц вэб холбоосыг сонгох сонголтуудыг засварлах эх байршлын файл
  • views/weblink/tmpl/edit.php - Вэб линкийг засварлах эх байршлын файл
  • views/view.html.php - Нэг вэб холбоосыг HTML форматаар харуулах үндсэн харагдацын анги Вэб холбоосын менежерийн эх байршлын файл
  • views/weblinks/view.html.php - Вэб холбоос менежерийн дэлгэцэн дээр шууд HTML форматаар вэб холбоосыг харуулах үндсэн анги.
  • access.xml - Хандалтын хяналтын жагсаалтын (ACL) системийн үйлдлийн жагсаалтыг агуулсан XML файл
  • config.xml - бүрэлдэхүүн хэсгийн тохиргоог сонгох сонголтуудын жагсаалтыг агуулсан XML файл
  • controller.php - Үндсэн хянагч анги
  • weblinks.php - Хүсэлтийн нэвтрэх цэг
  • weblinks.xml - XML ​​файл нь суулгах процессыг удирдахад хэрэглэгддэг

Давхардсан бялуу

Бид com_weblinks бүрэлдэхүүн хэсэг болон Joomla хуудасны html тэмдэглэгээний талаар ярих болно. Joomla вэбсайт дээр холбоосуудын лавлахыг хэрхэн хялбар бөгөөд энгийн байдлаар үүсгэх талаар.

Энэхүү CMS нь шууд кодчилолгүйгээр бүртгэлтэй хэрэглэгчтэй интерактив ажиллах зорилгоор бүтээгдсэн. Хэдийгээр Joomla-ийн хөгжлийн чиг хандлага нь com_weblinks бүрэлдэхүүн хэсгийг сайт дээр огт хэрэггүй гэж үзэн орхиж, аль хэдийн "хүнд" системд нэмэлт жин (100 кб - 90 файл) нэмэхэд хүргэж байна. Гэхдээ одоогоор энэ бүрэлдэхүүн хэсэг нь түгээлтэд байсаар байгаа бөгөөд зарим програмистууд ашигладаг.

Дэлгэц дээр харагдах Joomla вэбсайтын хуудас нь олон блок (мөн олон загвар) нэгэн зэрэг оролцдог давхаргын бялуу юм. Энд Joomla философи гарч ирдэг - том блок сайтын барилга. Блок бүр өөрийн гэсэн HTML тэмдэглэгээний загвартай байх ёстой.

Үндсэн блокууд:

Үндсэн хуудасны загвар (site_template/index.php), html тэмдэглэгээний тусламжтайгаар модуль ба бүрэлдэхүүн хэсгүүдийн байрлалыг тодорхойлж, эдгээр модуль болон бүрэлдэхүүн хэсгүүдийг харуулдаг.
- хуудасны загвар
- модулийн загварууд
- бүрэлдэхүүн хэсгүүдийн загварууд

Эдгээр том блок бүрийг засварлах боломжтой (өөрчлөлт). Өөрөөр хэлбэл, та ямар ч модуль эсвэл бүрэлдэхүүн хэсгийн загварыг тусад нь засах боломжтой бөгөөд энэ нь хуудсан дээр шинэ харагдах болно. Хуудасны загварт мөн адил хамаарна.

Шинэхэн програмист хуудсын агуулгын хэсгийн эхний мөр нь хуудасны гарчиг болж харагдах бөгөөд энэ хуудсыг зааж буй цэсний засварлах хуудсан дээр засварлагдсан гэдгийг ойлгоход хэцүү байж болно. Хоёрдахь мөр нь com_content эсвэл com_weblinks бүрэлдэхүүн хэсгийн загвараас гаралтай. Загвар дахь мөрүүд нь ихэвчлэн тэмдэгт мөрт хувьсагч байдаг бөгөөд тэдгээрийг эхлүүлэх, нутагшуулах ажлыг language\ru-RU\ru-RU.mod_weblinks.ini гэх мэт хэлний файлуудад гүйцэтгэдэг.

Заримдаа эхлэгч нь дэлгэцийн хуудсан дээрх ижил өгүүллийн логик үргэлжлэл мэт харагддаг энэ эсвэл тэр мөрийг ямар загвараар бүтээсэн бэ гэдэгт эргэлздэг. Нэг мөр нь нэг загварт, нөгөө нь хоёр дахь загварт, гурав дахь нь гурав дахь загварт байгаа нь харагдаж байна. Доорх табтай хүснэгт нь mod_tabform модулийн загвараас гарсан гаралт юм.

Заримдаа модулийн загваруудыг layouts гэж нэрлэдэг. Гэхдээ энэ бол нэр томъёоны асуудал юм. Мөн чанар нь адилхан - энэ нь агуулгын хувьд "хувцас" юм. Тэмдэглэгээ гэж хэлэх нь илүү зөв байх болно. Тиймээс нэг дэлгэцийн хуудасны тэмдэглэгээ нь өөр өөр Joomla лавлах файлд байрладаг.

Цэс

Олон шинэ Joomla программистууд цэсийн зүйлүүд өөр өөр төрлүүдтэй байж болохыг ойлгодоггүй. Өөрөөр хэлбэл, цэсийн зүйл нь өөр өөр төрлийн Joomla объектуудыг хэлж болно. Эдгээр нь өөр өөр объект байж болно, тухайлбал: бүрэлдэхүүн хэсгүүд (санал өгөх, хайлт, холбоосын лавлах гэх мэт).

Цэсийн зүйлийн төрлийг сонгох:

Харилцагчид (com_contact)
Холбоо барих ангиллын жагсаалт (ангилууд)
Тухайн ангиллын харилцагчдын жагсаалт (ангилал)
Холбоо барих
Дуртай харилцагчид (онцлох)

Материал (com_content)
Архивын материал (архив)
Материал (нийтлэл)
Бүх ангиллын жагсаалт (ангилал)
Блогын ангилал
Материалын жагсаалт (ангилал)
Онцлох материал
Материал үүсгэх

Ухаалаг хайлт (com_search)
Хайх

Сайн уу Дэлхий! (com_helloworld)
Зурвас (сайн ертөнц)

Мэдээний хангамж (com_newsfeeds)
Мэдээний мэдээллийн бүх ангиллын жагсаалт (ангилууд)
Ангилал дахь мэдээний жагсаалт (ангилал)
Мэдээний тойм

Хайх (com_search)
Хайлтын маягт ба хайлтын үр дүнгийн жагсаалт (хайлт)

Хэрэглэгчийн менежер (com_users)
Зөвшөөрлийн маягт (нэвтрэх)
Хэрэглэгчийн профайл (профайл)
Хэрэглэгчийн профайлыг өөрчлөх
Бүртгэлийн маягт
Хэрэглэгчийн нэрийг сэргээх (сануулах)
Нууц үг солих (дахин тохируулах)

Боодол (com_wrapper)
Боодол

Таны харж байгаагаар энд бүх цэсийн төрлүүд бүрэлдэхүүн хэсэг юм. Нэрээр нь цэсийн зүйлийн төрөл нь түүний бүрэлдэхүүн хэсгийн загварын нэрийг илэрхийлдэг. Бүрэлдэхүүн хэсгүүдийн загварууд нь харах лавлах хэсэгт байрладаг:

joomla\components\com_weblinks\views\categories
joomla\components\com_weblinks\views\category
joomla\components\com_weblinks\views\weblink
joomla\components\com_users\views\login

Таны харж байгаагаар цэс дэх холбоосын төрлүүдийн нэр болон vews лавлах дахь загваруудын нэр ижил байна.

Хөгжүүлэгч нь бүрэлдэхүүн хэсгүүдийн шинэ стандарт бус загвар (зохицуулалт) үүсгэх чадвартай. Эдгээр шинэ зохион байгуулалт нь цэсийн төрлийг сонгох цонхонд шинэ цэсийн төрлөөр тусгагдах болно. Энэ бол тусдаа сэдэв юм.

Joomla түгээлтийн демо контент

"Joomla-ийн тухай" цэсийн зүйлсийн шатлал нь com_weblinks Бүрэлдэхүүнийг анхдагч демо контент (Beez2 - Өгөгдмөл) Joomla загвар дээр харуулахын тулд хэрхэн бүтээгдсэнийг харцгаая.

com_weblinks бүрэлдэхүүн хэсгийг засахын тулд админ самбар руу орцгооё: Components->Links. Түгээлттэй хамт ирдэг демо контентод com_weblinks бүрэлдэхүүн хэсэгт зориулж таван категори үүсгэсэн болохыг бид харж байна. Энэ нь холбоосууд таван ангилалд хуваагдана гэсэн үг юм. Бүх үүсгэсэн категориуд #_categories мэдээллийн сангийн хүснэгтэд хадгалагдах болно. Бусад бүрэлдэхүүн хэсгүүдийн ангиллыг мөн ижил хүснэгтэд хадгална.

Жишээ өгөгдөл-Вэб холбоосууд
|-Парк холбоосууд
|-Joomla! Тодорхой холбоосууд
|-|-Бусад нөөц
Ангилалгүй

Joomla-ийн тухай цэсэнд (цэс засварлагч дээр) цэсийн зүйлсийн шатлалыг зохих ёсоор үүсгэсэн:

Цэсийн зүйлсийн шатлал:

Joomla ашиглаж байна! (төрөл: материал)
|-Өргөтгөлүүдийг ашиглах (төрөл: бүх категорийн жагсаалт) :: материал дахь ангиллын жагсаалт
|-|-Бүрэлдэхүүн хэсгүүд (төрөл: ангиллын блог) :: материал дахь ангилал
|-|-|-Weblinks Бүрэлдэхүүн хэсэг (төрөл: материал)
|-|-|-|-Вэб линк оруулах (төрөл: холбоос үүсгэх) :: Холбоос бүрэлдэхүүн хэсэгт
|-|-|-|-Weblinks Single Category (төрөл: ангилал дахь холбоосуудын жагсаалт) :: Холбоос бүрэлдэхүүн хэсэгт
|-|-|-|-Вэб холбоосын ангилал (төрөл: холбоосын категорийн жагсаалт) :: Холбоос бүрэлдэхүүн хэсэгт

Цэсийн зарим зүйл ангиллын жагсаалт, категорийн холбоосын жагсаалт, холбоос үүсгэх гэсэн төрлүүдтэй байгааг бид харж байна.
"Холбоос ангиллын жагсаалт" нь шатлалыг харуулах дээд ангиллыг зааж өгдөг.
"Ангилал дахь холбоосуудын жагсаалт" нь холбоосыг харуулах ангиллыг зааж өгдөг.
"Холбоос үүсгэх" хэсэгт бүртгүүлсэн хэрэглэгч бөглөх маягт гарч ирнэ.
Дашрамд хэлэхэд, энэ маягтын холбоос нь редактор дээр иймэрхүү харагдаж байна (түүний гадаад төрх хаягийн мөрөнд өөрчлөгдөнө):

index.php?option=com_weblinks&view=form&layout=edit

Зарим цэсийг зөвхөн бүртгэлтэй хэрэглэгчдэд харуулах боломжтой! Жишээлбэл, "Холбоос үүсгэх" төрлийн цэсийн зүйл нь зөвхөн бүртгэлтэй хэрэглэгчдэд харагдах болно. Энэ функцийг тусгайлан бүтээсэн бөгөөд ингэснээр бүртгэлтэй хэрэглэгчид хуудсан дээр тавигдах холбоосыг үүсгэх боломжтой болно.

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

Хэрэглэгчийн гадаад сайт руу линк нэмэх чадвар нь com_weblinks бүрэлдэхүүн хэсгийн гол давуу тал, утга учир бөгөөд хэрэглэгч шинэ контент - нийтлэл, зураг, видео файл гэх мэтийг нэмж оруулах чадвар юм.

Бүртгэгдсэн хэрэглэгчдэд шууд кодчилолгүйгээр сайтыг контентоор дүүргэх эрхийг олгох нь CMS Joomla-ийн үндсэн философи юм.

Ангилалгүй
Жишээ өгөгдөл-нийтлэлүүд
|- Joomla!
|-|- Өргөтгөлүүд
|-|-|- Бүрэлдэхүүн хэсгүүд
|-|-|- Модуль
|-|-|-|- Агуулгын модулиуд
|-|-|-|- Хэрэглэгчийн модулиуд
|-|-|-|- Дэлгэцийн модулиуд
|-|-|-|- Хэрэглээний модулиуд
|-|-|-|- Навигацийн модулиуд
|-|-|- Загварууд
|-|-|-|- Атомын
|-|-|-|- Beez 20
|-|-|-|- Beez 5
|-|-|- Хэл
|-|-|- Plugins
|- Парк талбай
|-|- Парк блог
|-|- Гэрэл зургийн цомог
|-|-|- Амьтад
|-|-|- Үзэсгэлэнт байдал
|- Жимсний дэлгүүрийн сайт
|-|- Тариаланчид
|-|- Жор

Агуулгын хувьд тийм ч олон ангилал байхгүй бололтой!
Мөн та мэдээллийн сан дахь категорийн хүснэгтийн асуулга ашиглан материал дахь категорийн шатлалыг харж болно.

`#_categories` ХААНА `өргөтгөл` = "com_content"-аас * СОНГОХ

Энэ сард алдаа хайгчид алдартай програмууд дахь шинэ өндөр түвшний мөлжлөгүүдээр биднийг сүйтгэхийг хүсэхгүй байна. Мэдээжийн хэрэг, алдартай компаниудын бүтээгдэхүүнүүдэд маш олон зөвлөмж нийтлэгдсэн боловч маш цөөхөн нь унших боломжтой PoC код агуулдаг. Бидний тоймд би саяхан тайлбарласан хамгийн чухал бөгөөд бүрэн сул талуудыг цуглуулахыг хичээсэн тул хойш суугаад уншихыг сайхан өнгөрүүлээрэй.

HTTP толгойн хүсэлтийг боловсруулах үед PHP-ийн эмзэг байдал Товч

Гуравдугаар сарын 3-нд нэгэн Адам Иванюк PHP орчуулагчаас HEAD хүсэлтийг төдийлөн зөв боловсруулдаггүй нэгэн сонирхолтой функцийг олж мэдэв. Судлаач энэ эмзэг байдлыг "PHP скрипт дэх HTTP HEAD арга заль" гэж нэрлэсэн.

Олон кодлогч нар PHP скриптүүддээ бичигдсэн бүх заавар нь дундуур нь тасрахгүйгээр (ялангуяа богино скрипт дээр) амжилттай ажиллана гэж найдаж байна. Хэрэв скриптийг эцсийн хэрэглэгч GET, POST, PUT аргуудыг ашиглан хүссэн бол ийм зүйл тохиолддог.

Гэхдээ та бусад HTTP аргууд байдаг гэдгийг мэдэх хэрэгтэй - жишээлбэл, HEAD. Яг энэ аргыг PHP дээр боловсруулах үед хамгаалалтын цоорхой гарч ирж магадгүй юм.

Орчуулагчийн эх сурвалжуудын нэгийг харцгаая: ./main/SAPI.c, мөр 315:

хэрэв (SG(хүсэлтийн_мэдээлэл).хүсэлтийн_арга &&
!strcmp(SG(хүсэлт_мэдээлэл).хүсэлтийн_арга, "ТОЛГОЙ"))
{
SG(хүсэлт_мэдээлэл).зөвхөн_толгой = 1;
...

Ямар нэгэн өгөгдөл ирэхэд php_ub_body_write функцийг гүйцэтгэдэг. Дараа нь main/output.c, 699 мөрийг харна уу:

хэрэв (SG(хүсэлт_мэдээлэл).зөвхөн_толгой) (
хэрэв(SG(толгой_илгээсэн))
{
буцаах 0;
}
php_толгой(TSRMLS_C);
zend_bailout();
}

Эндээс та үүнийг анх удаа дэлгэцэн дээр хэвлэх ба HEAD аргыг ашиглах үед zend_bailout функц нь скриптийг эвдэж байгааг харж болно.

Мөлжих

Одоо HEAD аргыг ашиглан энэ скриптэд хандъя:

Таны хүлээж байсанчлан манай зочны дэвтэр "echo $data;" мөрөнд ажиллахаа зогсоох тул book.txt файлыг зүгээр л тэг болгох болно.
Энэ жишээ нь нэлээд хор хөнөөлтэй шинж чанартай юм. Хоёрдахь жишээнд бид энгийн админ самбар дээрх зөвшөөрлийг алгасаж болно:

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

Хэрэв бид админ самбар руу HEAD-ээр хандвал "echo"-тэй кодын хэсэг дээр түүний гүйцэтгэл тасалдсан тул захиргааны хувьсагч дахин тохируулагдахгүй бөгөөд бид програмын хаалттай хэсгийг аюулгүйгээр тэнүүчилж чадна. Энд анхаарах ёстой зүйл бол ихэнх вэб серверүүд гаралтын буферийн утгыг 4096 байт гэж тохируулсан байдаг тул ажлын жишээн дээр "Урт мөр нь 4090 орчим тэмдэгт агуулдаг" гэсэн мөр хэрэгтэй байж магадгүй юм.

Мөлжих
  • PHP

    Энд $check массив нь бидний POST өгөгдлийг агуулдаг бөгөөд $locked хувьсагч нь str_rot13() функцийг ашиглан бүдгэрүүлсэн цуваа тэмдэгт бөгөөд бидний бүрэн хяналтанд байдаг.

    Энэ үед ][-ийн харгалзах нийтлэлүүдийг уншаагүй хүмүүст зориулж жижиг ухралт хийж, PHP-ийн ид шидийн аргуудад гарч ирдэг алдааны талаар товч ярих нь зүйтэй юм. Тиймээс PHP-ийн 5-р хувилбар дээр OOP програмчлалын үндсэн ойлголт гарч ирэв: бүтээгч ба устгагч. "__construct" аргыг ашиглан бүтээгчийг, "__destruct" аргыг ашиглан устгагчийг хэрэгжүүлдэг. Ажлаа дуусгасны дараа unserialize() функцээр дуудагдах үед объект бүр кодонд бичигдсэн бол өөрийн __ устгах аргыг гүйцэтгэдэг.

    Одоо бид хүрээ рүүгээ буцаж очоод ./libs/configure.php файлаас App ангийн устгагчийг харцгаая:

    функц __destruct()
    {
    хэрэв ($ this->__cache)
    {
    $core = App::core("бялуу");
    тохируулаагүй($this->__paths);
    Cache::write("dir_map", array_fi lter($this->__paths),
    "бялуу_цөм");
    Cache::write("fi le_map", array_fi lter($this->__map),
    "бялуу_цөм");
    Cache::write("object_map", $this->__объект,
    "бялуу_цөм");
    }
    }

    Дээрх кодоос та Cache объект руу дурын утгыг бичих замаар энэ аргыг эвдэж болохыг харж болно. Хагарлын хамгийн сонирхолтой түлхүүр бол 'file_map' юм. Энэ нь ангиуд болон харгалзах PHP файлуудын хоорондын холболтыг удирддаг бөгөөд скриптийг ажиллуулах явцад нэмэлт ангилуудыг ачаалахад ашиглагддаг.

    Ангиудыг ачаалах бодит код нь арай илүү төвөгтэй боловч энэ нь бүгд App класс доторх __load аргын дараах код хүртэл буурдаг.

    Бинго! $file хувьсагчийг орлуулснаар бид өөрсдийн PHP кодыг оруулж болно! Түүнээс гадна, энэ нь жинхэнэ алсын зайнаас файл оруулах алдаа байх болно - иймээс бидэнд дотоод файлуудыг серверт байршуулах нэмэлт заль мэх хэрэггүй болно. Гэсэн хэдий ч CakePHP нь халдагчийн мэддэг лавлахад цуваа хэлбэрээр байрладаг файлд суурилсан локал кэш ашигладаг тул олсон эмзэг байдлын зохиогч энэ цоорхойг ашиглах LFI сонголтыг санал болгож байна.

    Мөлжих

    Хортой цуваа утас үүсгэх жижиг PoC-ийн хувьд Феликс дараах кодыг санал болгож байна.

    Мэдээжийн хэрэг та эхлээд CakePHP-ээс шаардлагатай ангиудыг оруулах ёстой. Мөн бүрэн ажиллагаатай Python exploit байдаг бөгөөд та үүнийг malloc.im/burnedcake.py дээрээс олж болно.

    Энэхүү exploit нь CakePHP дээр бүтээгдсэн, хамгаалалтын токен бүхий POST маягтуудыг ашиглан, кэш файлуудын стандарт байршил өөрчлөгдөөгүй программ бүрт ажиллах ёстой. Анхдагч байдлаар, exploit нь өгөгдлийн сангийн тохиргоог харуулдаг бөгөөд бусад ашигтай функцуудыг PHP-д суулгасан ачааллыг өөрчлөх замаар хялбархан нэмж болно.

    Зорилтот
    • CakePHP getState("fi lter_order_dir");
      $fi lter_order = JFilterInput::clean($fi lter_order, "cmd");
      $fi lter_order_dir =
      JFilterInput::clean($fi lter_order_dir, "үг");
      // Бид бүгдийн жагсаалтыг авах хэрэгтэй
      // өгөгдсөн категори дахь вэб холбоосууд
      $query = "SELECT *".
      "#__вэб холбоосуудаас" .
      "WHERE catid = ". (int) $this->_id.
      "БА нийтэлсэн = 1" .
      "AND архивлагдсан = 0".
      "ЗАХИАЛАХ". $fi lter_order "".
      $fi lter_order_dir .", захиалга";
      $ query буцаах;
      }

      Эндээс та $filter_order болон $filter_order_dir хувьсагчдыг SQL хэллэгт чанд нийцэж байгаа эсэхийг шалгаагүйг харж болно; шалгалтыг зөвхөн JFilterInput классын стандарт цэвэрлэх аргыг ашиглан хийдэг.

      Бид энэ кодыг сайтын аль ч хэсэгт байрлуулдаг бөгөөд энэ нь мэдээллийн сангаас 5 санамсаргүй холбоос болон санамсаргүй зангууг харуулдаг. Холбоос руу зөвхөн 1 гэж бичихийн оронд зангууг шингэлэх нь дээр. Вэбсайтаа зөв холбосноор та траффик нэмэгдэж, бусад вэбсайтын үзүүлэлтүүд сайжирч байгааг шууд харах болно.

      Би энэ нийтлэлийн сэтгэгдэл дэх таны асуултыг тэсэн ядан хүлээж байна.

      Хэвлэгдсэн огноо: 2014.03.03
        Шүүмж, сэтгэгдэл:

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

        Кирилл:
        Хуулбарлах тухай тэмдэглэл өгсөнд баярлалаа, би үүнийг дөнгөж сая харлаа, удахгүй засахыг хичээх болно.

        Алексей Павлов:
        $tex = explode(":",$sendlist[$count] мөрөнд алдаа гарлаа Танд хоёр цэг биш цэгтэй таслал хэрэгтэй. Би үүнийг ойлгомжтой болгохын тулд кодыг бага зэрэг өөрчилсөн: