Tag Archives: PHP

Double Submit problēmas risinājums

Diezgan pavecs, bet labs raksts, kur aprakstīts, ka to var atrisināt izmantojot GET pieprasījumu ar redirektu pēc POST vai arī izmantojot unikālas vērtības.

Kombinējot abus variantus var veiksmīgi izvairīties arī no CSRF.

Redirekta piemērs priekš PHP.

Kā nodemonstrēt XSS ievainojamību

Ja ir nepieciešams nodemonstrēt kādā veidā var izmantot XSS ievainojamību kādā mājas lapā, tad var izmantot autora izveidoto php skriptu, lai nebūtu jāizveido divritenis no sākuma.

Otrs veids ir izmantot šo pieeju.
Continue reading

www.zz.lv un XSS

Mājās drusku pabakstoties atklājās, ka Zemgales ziņas mājas lapas meklēšanas funkcionalitātē ir XSS ievainojamība. Pieņemu, ka tāda pati problēma ir visās AS Dienas reģionālo avīžu mājas lapās.
Pilnībā atvēzēties liedz tas, ka tiek atfiltrēts „=” simbols.
Par XSS var palasīt:

http://hakipedia.com/index.php/Cross_Site_Scripting
http://www.owasp.org/index.php/Cross-site_Scripting_(XSS)
http://ha.ckers.org/xss.html
http://www.martani.net/2009/08/xss-steal-passwords-using-javascript.html

Mainīgo apstrādes kļūda

Intereses vadīts pamēģināju paspēlēties ar vienas mājaslapas mainīgajiem.
Joka pēc sāku ar direktorijas satura iegūšanu “directory listing” – viss kārtībā.

Nākamais solis ievadīt kaut ko ačgārnu, piemēram, www.lapa.tepat/css/abrakadabra, no kura normālā gadījumā vaajdzētu notikt redirektam uz lapas sākumu. Tā vietā man izvada šādu paziņojumu:

Source izksatā,tas izkatās sparotamāk:

Ko tas šinī konkrētā gadījumā dod un ko es varu ar to iesākt?
Konkrētā gadījumā neko daudz, tomēr tas norāda uz to, ka mājaslapā nav par visu padomāts un iespējams ir atstātas vēl kādas kļūdas par kurām netika padomāts. Tāpēc iespējams pameklējot dziļāk var atrast vēl šo un to.

Kļūdu paziņojumā bija vēl viena interesanta lieta-
Izvades teksts līdzīgs šim- “Autorizētiem lietotājiem pieejama daudz plašāka informācija, taj⁠skaitā ģeogrāfiskā GPS izsekošana” un tas mājaslapā, kuras uzdevums nav nodarboties ar kravas loģistiku.
Tā kā iespējams ir neuzmanīgi izmantotas iestrādes no citiem projektiem.
Google gan meklējot pēc šāda teksta nekas netika atrasts.

Manuprāt šeit kļūda ir tajā, ka pirmais mainīgais sakrita ar direktorijas nosaukumu un līdz ar to notika kļūda mainīgo apstrādē. Par to liecina arī tas, ka ievadot citu direktoriju nosaukumus kļūda ir tāda pati, piemēram http://lapa.aa/images/abrakadabra.

Ko no tā var mācīties?-
Mainīgo pirmapstrādes mehānismā jāparedz gadījums, ka tie var sakrist ar direktoriju nosaukumu.

Vai es neesmu pieļāvis šādu kļūdu kādreiz? Iespējams esmu un tāpēc par kļūdām ir jārunā, lai tās vairs neatkārtotos.

Izraksts no PHP un MySql

Dažas pamat lietas no php.net, lai katru reizi nav jāmeklē kā pārbaudīt vai tabulā ir meklējamie ieraksti.

< ?php
$conn = mysql_connect("localhost", "mysql_user", "mysql_password");
Continue reading

50/50, aizraujošā informātika vai kāpēc nestrādā dubultošanas metode?

Nu tā, šodien pamodos un izdomāju pārbaudīt praksē visiem zināmo patiesību, kāpēc dubultošanas metode (gan kazino- rullete, utt) nestrādā.. vai varbūt strādā?

Man jau liekas loģiski, ja ir divas iespējas (piemēram, sarkans un melns), tad diezgan ātri vajadzētu pienākt reizei kad varētu uzminēt sarkanu vai melnu :) Continue reading

Draugiem.lv pase priekš wordpress

Šorīt no rīta sagribējās izdarīt kaut ko paliekošu un sabiedrībai interesantu.

Pirmais, kas ienāca prāta bija uzrakstīt plugin priekš wordpress, kas ļautu ievietot komentārus ar draugiem.lv pasi.

Tā apņēmības un entuziasma pilns jau ķēros pie darba, kad ienāca prātā iemest google vai kāds meistars jau nav pacenties un vai netaisos izgudrot divriteni otrreiz..

Par nožēlu priekš manis pirmais rezultāts ievadot draugiem.lv pase wordpress izlec Ģirta Upīša rakstītais plugins.

Žēl..

Apskatot pēdējās relīzes (pagaidām divas 1.0 un 1.1) datumu- 2010.04.13 izdaru secinājumu, ka nokavēju tikai nedaudz.

Kāpēc šī ideja neienāca 1 mēnesi atpakaļ?

Nekas domāsim tālāk kā izpausties brīvos brīžos.

Aizstājam vai izmainām izvadāmo kodu izmantojot javascript

Veidojot vienu lapu radās neikdienišķa situācija- bija nepieciešams izmainīt jau php izveidoto kodu un aizstāt to ar citu, ja izvadītajā html kodā ir sastopams cits unikāls kods.

Kā vienīgais risinājums man ienāca prātā javascript.

Iespējams kādam tas liksies gaužām vienkārši, tomēr man, kas ir “uz jūs” ar javascript izveidot šīs pāris rindiņas bija diezgan ķepīgi un laikietilpīgi.

Nu tad, lūk, pati funkcija un paskaidrojumi:

<script type="text/javascript">

//izsaucam funkciju pie ielādes

window.onload=gethtml; Continue reading

Atbrīvojamies no komentāru spama

WordPress piedāvā iebūvētu un vienkāršu veidu kā atbrīvoties no spama- Akisment, kura spēku var palielināt sadaļā:

Iestatījumi->Diskusijas ierakstot papildus frāzes vai IP adreses, kas liecinās par spamu. Dažas adreses, kuras nomocīja mani:

194.8.75.149

194.8.75.163

87.118.118.133

194.8.74.220

92.112.

92.113.

Bet pavisam nejauši uzdūros vecam pods.lv rakstam, kurā vienkārši ieteikts ar javascript palīdzību pamainīt komentu saņemšanas lapas adresi. Piemērs rakstīts wordpress, bet to tik pat vienkārši var pielāgot jebkurai citai lapai.

Kas tādā veidā tiks izdarīts?

Ja nebūs ieslēgts javascript atbalsts, tad ievadot komentāru tas tiks padots citai lapai, piemēram, /spaamms/ nevis comments.php. Tas sniedz rezultātu, jo daudzām spamotāju sistēmām nav ieslēgts javascript.

Lai izskatītos korektāk var arī izveidot šādu lapu ( dll.lv/spaammss), kurā populārzinātniski paskaidrotu, kas noticis.

Papildus tam pirms komentēšanas formas tiks izvadīs paziņojumu, ka jābūt ieslēgtam javascript, lai komentētu.

Lai to izdarītu atrodam wordpress templeita comments.php failu, kas atrodas “web root/wp-content/themes/temas_nosaukums/comments.php”

Atrodam šādu rindiņu:

<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php” method=”post” id=”commentform”>

un aizstājam to ar:

<form action="<?php echo get_option('siteurl'); ?>/spaamms/" method="post" id="commentform">

<script type="text/javascript">

document.getElementById('commentform').action = "<?php echo get_option('siteurl'); ?>/wp-comments-post.php";

</script>

<noscript>

<p><strong class="postdate">Lai izmantotu koment&#275;&#353;anas iesp&#275;ju, p&#257;rl&#363;k&#257; j&#257;b&#363;t iesl&#275;gtam JavaScript atbalstam!</strong>. Kaut k&#257; ta&#269;u ir j&#257;m&#275;&#291;ina c&#299;n&#299;ties ar koment&#257;ru piedrazot&#257;jiem.</p>

</noscript>

Papildus tam, lai daži spamotāji pa taisno neievietotu komentārus, nomainīju komentāru apstrādājamā faila nosaukumu tai pašā failā:

document.getElementById('commentform').action = "<?php echo get_option('siteurl'); ?>/wp-comments-post.php";

uz:

document.getElementById('commentform').action = "<?php echo get_option('siteurl'); ?>/wp-comments-post_n123.php";

un, protams, tad arī pats komentāru apstrādājošais fails jāpārsauc- atrodas web root/wp-comments-posts.php uz wp-comments-post_n123.php

Es tagad tiešām ceru, ka ar to pietiks…

Kā izgriezt simbolu no WEB lapas..

Viena uzdevuma veikšanai vajadzēja izgriezt no mājaslapas un izvadīt simbolu virkni, kas atradīsies starp noteiktiem tagiem(kuri nav XML).
Uz ātro neatradu gatavu risinājumu tāpēc uzrakstīju funkciju.
Nepretendēju uz pašu asprātīgāko risinājumu, bet varbūt kādam noder..

function griezam($Content,$str_pirms,$str_pec){

$garums_pirms=strlen($str_pirms);
$pec = strstr($Content, $str_pirms);
//nogriežam visu lidz sakumama
//nomemam visu lidz firmai
$pec= substr(“$pec”, $garums_pirms);
//nogriežam
$pec1=strstr($pec, $str_pec);

//saskaitam cik ir atlikusaja rinda un pirms nogriezt beigas
$sk_pec=strlen($pec);
$sk_pirms=strlen($pec1);

$sk=$sk_pec-$sk_pirms;

$rezultats=substr(“$pec”, 0,$sk);

echo “$rezultats”;
}

//ierakstam lapu no kuras gribam izgriezt kaut ko

$Content = file_get_contents(“http://dll.lv”);

//ierakstam stringu kas ir pirms vēlamā elementa. Piemers ir vienkārš, tai pat laikā tā vietā var būt piemēram <div style=”color:#00FF00″>,  galvenais, lai tas būtu pirmais unikālais un beidzas pirms vēlamā

$str_pirms=’<title>’;

//ierakstam stringu, kas ir pec velamā elementa

$str_pec = ‘</title>’;

//izsaucam funkciju

griezam($Content,$str_pirms,$str_pec);

Lapas redirect

Ja nepieciešams pārsūtīt uz citu lapu tās ielādes laikā, var izmantot php funkciju:

<?
$URL="http://localhost/…";
header ("Location: $URL");

?>

Taču gadījumos, kad jāaizsūta uz citurieni izpildāmā koda vidus daļā(pie noteiktiem notikumiem), nekas neatliek kā izsaukt javascript:

echo “<script language=\”javascript\”>”;
echo “window.location = \”http://localhost/…”;
echo “</script>”;

Tas gan nenostrādās, ja pārlūkā būs atslēgts javascript

PHP funkcija, kas atgriež tekošo URLI

function curPageURL() { Continue reading