Məlumatlar filterdən keçir, amma HTML teqlərindən istifadə edə bilmirəm

Salam, deməli saytda bazaya gedən məlumatları yox, bazadan gələn məlumatları htmlentities($data, ENT_QUOTES | ENT_HTML5, ‘UTF-8’) ilə filterdən keçirib, ekranda çap edirəm. Bəzən elə olur ki, html teqlətindən istifadə etmək lazım gəlir. Məsələn müəyyən uzunluğu keçəndə, arasına
teqi qoyamaq lazım gəlir. Ya da ki, mətn daxilində link, emoji və s. varsa onda onları teqlə əvəzləmək lazım gəlir. (a href=”” img src=”” və s.) Filterdən keçirtdiyim üçün bunu html kodu kimi yox adi mətn kimi çap edir. (‘Salam img src=”smiley.png”‘) Belə bir variantla problemi həll etmək olar: str_replace(“<br>”, ”
“, $data) , amma bir şey var ki, əgər istifadəçi göndərən mətndə elə
teqi olsa (yəni misal üçün kiməsə
teqi haqqında mesaj göndərsə) bu str_replace() metodu ilə əvəzləndiyi üçün adi mətn kimi yox html teqi kimi ekrana çıxacaq. Yəni XSS boşluğu yaranacaq.


Yadda saxlama
Kateqoriya: Sual . , , . Qısa keçid.

Verilmiş cavablar və yazılan şərhlər (5 cavab var)

(17:24, 23/10/2016 ) #65622

Belə bir alternativ tapdım, daha doğrusu WordPress-in kodlarına baxarkən gördüm :). Deməli, verilənlər bazasına məlumat filterlənib göndərilir və ordan məlumat çəkiləndə artıq məlumatı filterdən keçirmədən ekranada çap edilir. Bu təhlükəsizlik baxımından nə dərəcədə düzgündür?

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(19:12, 23/10/2016 ) #65624

Salam. Dediyiniz çox ümumi təsvirdir, bu işlərin çox xüsusi halları var və hamısı üçün eyni qayda keçərli deyil. Məsləhət görərdim ki, “WordPress – Validating user data” axtarıb rəsmi saytdan tam oxuyasınız bu mövzunu.
escape başqa məntiqdir, validate başqa, sanitize başqa. Esc çıxışda işlədilir, (məsələn esc_html html teqlərə mane olur, esc_attr html atribut formatına salır data-nı, yəni qoymur ki data html atributu korlasın (class=”” )
və.s.
Bazaya məlumat daxil olanda isə Sanitize adlanır. Yəni burada escape və ya php-nin htmlentities, addslashes filan istifadə edilməməlidir. Həm input həm output üçün WordPress-in öz funksiyaları yetərlidir.

Şərh olaraq yazdığınız hal isə xüsusi haldır, bəzən hansısa məlumat saxlanılarkən onun filtersiz istifadəsi normal ola bilər. Yenə deyirəm, bu duruma bağlıdır, bu məsələlərin ümumi qaydası yoxdur. Bəzən saxlanılacaq data ədəddirsə sadəcə (int) funksiyası bəs edə bilər, bütün filter funksiyalarının yerinə təkcə o.

Tam məlumat burada.
Ümumi yanaşmanız isə doğrudur: “Never trust user input” yanaşması.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (10:08, 25/10/2016 ) #65638

    Yox, mən hər hansısa CMS istifadə etmirəm. Kodları özüm yazıram, yəni deməyim odur ki, mən istifadəçidən alınan məlumatları htmlentites metoduyla bazaya yazdırıram.(<b>) Bazadan məkəndə isə heç bir əlavə əməliyyat aparmıram. Yəni, bu təhlükəsizdir mi?

    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

      (10:58, 25/10/2016 ) #65639

      Bazadan çəkəndən sonra nə edirsiz bəs? Təzədən decode edib dərc edirsiz hardasa? O halda entities-in mənası nə oldu? Sadəcə mysql-də saxlamaqmı? Axı entities-in mysql ilə əlaqəsi yoxdur.
      Mysql tərəfi qorumaq üçün mysqli-nin öz prepare metodundan istifadə etməniz lazımdır.
      html ilə bağlı qorumalar üçün, XSS filan məsələlərinə görə isə yaxşı olar ki fərdi yanaşma ilə qurasınız məntiqi. Məsələn strip_tags edib icazəli teqləri saxlayıb qalanları strip edə bilərsizniz bazadan oxuyarkən və ya yazmadan öncə. (məsələn script teqini filter etmək olar).
      Sıfırdan düşünməkdənsə hazır class-lar da götürə bilərsiniz github-dan. Lazımi açar sözləri daxil edin, balaca hazır class-lar götürün githubdan. Hansı ki həm girişi həm çıxışı filterləyə bilir lazımi formada.

      Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

      (21:10, 25/10/2016 ) #65650

      Misal üçün istifadəçi b teqini yazır. Mən onu htmlentities() ilə “&”lt;b”&”gt; halına gətirib yazıram bazaya. Ordan çəkəndə isə adi print ilə çap elətdirirəm.

      Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

Bu suala aid öz sualım var:
Sual verin
Bu suala cavab vermək istəyirəm:
Cavab verin

Cavab verin


Cavab yazmaq üçün lütfən sağ sütundan və ya buradan hesaba daxil olun.

Üzvlər üçün giriş

Qeydiyyat

Elan qutusu

Son cavablar və şərhlər

Triste cavab verdi - Adsense ya görə VÖEN gəlir vergisi 20% istəyirlər (6 gün əvvəl)

Software Developer cavab verdi - Adsense ya görə VÖEN gəlir vergisi 20% istəyirlər (6 gün əvvəl)

Triste cavab verdi - Google Adsense vergi (6 gün əvvəl)

E. Hacı cavab verdi - Xif mn kodu (14 gün əvvəl)

Khagrov cavab verdi - Axtardığım mahnını tapa bilmirəm kömək edin (32 gün əvvəl)

E. Hacı cavab verdi - Dünəndən Kompüterlə Twitter/X və Pinterest -ə girə bilmirəm. (40 gün əvvəl)

orkhanrza cavab verdi - AZ9095də bağlama qalıb (45 gün əvvəl)

Ismayil1997 cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (53 gün əvvəl)

revan orucov cavab verdi - Bakıda evə 100mbps+ internet verən provayder var? (57 gün əvvəl)

E. Hacı cavab verdi - WordPress sistemli saytda Facebook və İnstagram platformalarına özəl target_blank tənzimlənməsi haqqında... (59 gün əvvəl)

Jurnalist cavab verdi - WordPress sistemli saytda Facebook və İnstagram platformalarına özəl target_blank tənzimlənməsi haqqında... (59 gün əvvəl)

asssa1 cavab verdi - Riyazi proqramlar üçün proqram (61 gün əvvəl)

Aleks cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (67 gün əvvəl)

E. Hacı cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (67 gün əvvəl)

Software Developer cavab verdi - Patreon , Ko-fi , Buy Me A Coffee , Kickstarter kimi saytlardan gələn pula görə vergi tutulur? (67 gün əvvəl)

Software Developer - 615 xal

E. Hacı - 608 xal

Onar Alili - 526 xal

Dilsuz - 448 xal

Cabbarov Sübhan - 434 xal

Maqa - 346 xal

Ruslan Butdayev - 328 xal

Namiq Bəndəli - 297 xal

U.Tarlan - 244 xal

Meherremoff - 234 xal

Sistemə daxil olmuş 23288 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

E-Haci.net istehsalı. © 2010-2024