FoxLv Ierakstīts Marts 24, 2008 Share Ierakstīts Marts 24, 2008 Gari Nav Ko Rakstit - Problema Tada Kad Nesen Nevaretu Teikt ka Man, Bet Draugam Uzhakoja Webu (sql). Kautkur Biju Dzirdejis Par Tadu Antisql Injection Skriptu. Tikai Nav ne Jausmas Kur Tadu Vai Tam Kautko Lidzigu Dabut. Butu Pateicigs Ja Varetu Palidzet Skripts Ir Domats Prieks Ta Lai Aizsargatu SQL No Visadam Drazam, Un Hakeriem. Please Help. Link to comment Share on other sites More sharing options...
VIL Marts 24, 2008 Share Marts 24, 2008 parametriem pirms noticēšanas izmanto validāciju (datu tips, garums, konteksts) neizmanto php, bet kaut vai to pašu delphi, kas strādā ar db ar komponentēm. Link to comment Share on other sites More sharing options...
FoxLv Marts 24, 2008 Author Share Marts 24, 2008 Emm Vai Nu Es Nesapratu Ne Varda No Tava Teksta Vai Ari Tu Nesaprati Manu Domu. Link to comment Share on other sites More sharing options...
eMDiiPii Marts 24, 2008 Share Marts 24, 2008 VIL, arī PHP ir DB abstrakcijas slāņi, kā arī prepared statements un citādas jaukas lietas... Un caur CGI laist delphi aplikāciju ir tāds oldschools, ka nemetas ... Neērti, salīdzinot ar PHP :-) Tad jau labāk būtu ieteicis JSP izmantot. FoxLv, varbūt tu biji domājis Apache2 mod_access vai arī šo līko risinājumu? Link to comment Share on other sites More sharing options...
VIL Marts 24, 2008 Share Marts 24, 2008 sorry, es ar php esmu saskāries tik daudz, cik uzinstalēt un vienu selektu no oracle pacelt. Tā kā selektu rakstīju plain tekstā, validācijas nepieciešamība bija acīmredzama. JSP konceptuāli tas pats delphi variants vien ir. Link to comment Share on other sites More sharing options...
eMDiiPii Marts 24, 2008 Share Marts 24, 2008 Bet web`am piemērotāks ir JSP un klasiskāks :-) Ja tu būtu izmantojis PDO(`dabiskais` PHP datubāžu abstrakcijas veids), nevis klasiskās oci_* funkcijas, tev būtu pieejami ar prepared statements. <?php try { $dbh = new PDO('oci:', 'scott', 'tiger'); } catch (PDOException $e) { die($e->getMessage()); } $stmt = $dbh->prepare("SELECT * FROM tableName WHERE fieldName = ?"); if ($stmt->execute(array($_GET['name']))) { while ($row = $stmt->fetch()) { print_r($row); } } Link to comment Share on other sites More sharing options...
FoxLv Marts 24, 2008 Author Share Marts 24, 2008 Sie Scripti Der SQL 2000? - Ta Aizsardziba Ir Domata Konkreti MuOnline Webam. Link to comment Share on other sites More sharing options...
MarisO Marts 24, 2008 Share Marts 24, 2008 JSP konceptuāli tas pats delphi variants vien ir. patiesi ? kur tad ir līdzība ? cik atceros, delfos ir windows logi, bet jsp tiek translēts/kompilēts uz servletu, kas drukā htmlu topika autoram - savam draugam pasaki, ka php ir gatava funkcija, kurai cauri jāizlaiž sql, lai novērstu injekcijas, nevajag nekādus skriptus :evil: Link to comment Share on other sites More sharing options...
eMDiiPii Marts 25, 2008 Share Marts 25, 2008 MarisO, nav mssql_escape_string vai mssql_real_escape_string .° A Delphi var laist caur CGI, nevajag nekādus logus būvēt, tik konsolē izmest gan headerus, gan HTML. Link to comment Share on other sites More sharing options...
VIL Marts 25, 2008 Share Marts 25, 2008 Kur līdzība? - "kompilēts" Link to comment Share on other sites More sharing options...
rzx Marts 25, 2008 Share Marts 25, 2008 (labots) function sql_quote( $value ) { if( get_magic_quotes_gpc() ) { $value = stripslashes( $value ); } //check if this function exists if( function_exists( "mysql_real_escape_string" ) ) { $value = mysql_real_escape_string( $value ); } //for PHP version < 4.3.0 use addslashes else { $value = addslashes( $value ); } return $value; } Labots Marts 25, 2008 - rzx Link to comment Share on other sites More sharing options...
Jeasus Marts 25, 2008 Share Marts 25, 2008 vai tad mysql_real_escape _string nenovers injekcijas? Vai ari eksiste vel kads veids ka sacakaret kverijus? Link to comment Share on other sites More sharing options...
Vilx- Marts 25, 2008 Share Marts 25, 2008 Visdrošākais variants ir parametrizētie kveriji un storētās procedūras. Universāls skripts pret SQL injekciju neeksistē - katra programma ir specifiska, un katrai ar roku jāiet cauri, un jāskatās, kurās vietās var rasties SQL injekcijas. Link to comment Share on other sites More sharing options...
Artic^MX Marts 25, 2008 Share Marts 25, 2008 (labots) <?php $badwords = array(";","DROP","SET","UPDATE","'","\"","*"); foreach($_POST as $value) foreach($badwords as $word) if(substr_count($value, $word) > 0) // te var detektot ip adresi die("SQL Injection Detected"); ?> kodu liek katra koda faila sākumā, kurā tiek veidots pieslēgums mysql bāzei. Šis kods "itkā" novērš injekcijas caur input laukiem, kas tiek sūtīti ar post metodi. šis nav mans skripts un atbildību nenesu. ja kaut kas te nav kārtībā, tad labojiet vai dzēstiet postu Labots Marts 25, 2008 - Artic^MX Link to comment Share on other sites More sharing options...
Vilx- Marts 25, 2008 Share Marts 25, 2008 Viena maza problēmiņa - šis skripts neļauj lietotājam teksta laukos ievadīt pēdiņas, dubultpēdiņas, semikolus vai zvaigznītes. Link to comment Share on other sites More sharing options...
Jeasus Marts 25, 2008 Share Marts 25, 2008 Vilx, kas ir "parametrizētie kveriji "? Link to comment Share on other sites More sharing options...
eMDiiPii Marts 25, 2008 Share Marts 25, 2008 vai tad mysql_real_escape _string nenovers injekcijas? Vai ari eksiste vel kads veids ka sacakaret kverijus? mysql_real_escape_string prasa aktīvu mysql savienojumu un ir domāts MySQL . Autors izmanto Microsoft SQL Server 2000 un PHP nav tādas funkcijas mssql_escape_string vai mssql_real_escape_string, tādēļ ir jāizmanto addslashes(); Artic^MX - SQL injekcijas var izveidot arī GET metodi padoti dati vai arī cepumos esoši dati. Bez tam, šis skripts nenovērš iespēju brīvi izselektot datus no datubāzes, vai piemēram, ielogoties kā administratoram. rzx, kur SQL Server 2000 un magic_quotes izslēgtai konfigurācijai atšķirība no vienkārša addslashes() ? Jeasus, mans iepriekš iepostētais koda gabals satur parametrizētu vaicājumu ... Link to comment Share on other sites More sharing options...
Orion7 Marts 25, 2008 Share Marts 25, 2008 Ta vienkārši vajag izveidot atsevišķu db lietotāju priekš web un norādīt viņam tiesības uz konkrētiem db objektiem, kā arī maksimāli izmantot db glabātās procedūras/funkcijas/skatus. Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!