הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   [טיפ] איך לדעת שה ACT שהכניסו הוא תקין (https://hosts.co.il/forums/showthread.php?t=36637)

nevo 22-12-06 20:45

עוד רעיון חמוד,
נכון שהACT הוא בדר"כ Id מהמסד והId לא יכול להיות אפס.
תחשבו על זה ערך מספרי של טקסט זה 0.(זה יכול לפתור בעיות עם משהו מכניס בACT מחרוזת)
אין רשומה כזה 0 גם.
מה עושים, פתרון :P
PHP קוד:

$getAct = (isset( $_GET['act']))?$_GET['act']:0;
if( 
intval$_GET['act']) >){
    
// true value and the include :)
}
else
{
    
// false value



tnadav 22-12-06 20:54

ציטוט:

נכתב במקור על ידי psycho (פרסם 392980)
בדיוק.

כל שאר האלטרנטיבות פשוט לא יעילות.

ולמה להשתמש בשיטה הזו אי-פעם בכלל? של ה INCLUDEים. מיותר.

יש יותר מדי אופציות אחרות יעילות ואפילו עדיפות מבחינת אופטימיזציה

יש לך מושג על מה אתה מדבר בכלל?
Include-ים מיותרים?
מה נראה לך שב- Switch עושים?

Switch אולי יותר בטוח, ממש לא יותר מהיר וקשה לתחזוק, אם אתה רוצה משהו יותר נורמאלי תוציא מערך ממסד נתונים שמכיל את כל ה- ACT-ים ה"מותרים" ותבדוק עם ה- act שקיבלת מ- get נמצא במערך...

psycho 22-12-06 21:04

ציטוט:

נכתב במקור על ידי tnadav (פרסם 393027)
יש לך מושג על מה אתה מדבר בכלל?
Include-ים מיותרים?
מה נראה לך שב- Switch עושים?

Switch אולי יותר בטוח, ממש לא יותר מהיר וקשה לתחזוק, אם אתה רוצה משהו יותר נורמאלי תוציא מערך ממסד נתונים שמכיל את כל ה- ACT-ים ה"מותרים" ותבדוק עם ה- act שקיבלת מ- get נמצא במערך...

נשמה, כמה מניפולציות על ה משתנה שמתקבל ב GET וישר רץ ל INCLUDE ואני נחשף לכלכך הרבה פירצות אבטחה.

לא עדיף פשוט לעבוד נטו עם מסד?
או במקרה הכי גרוע ובא לי להשקיע עוד דקה ולעבוד עם MOD REWRITE

Eli-Hai 22-12-06 21:08

טוב אני מתנצל שחשבתי שאפשר להשתמש ב-readdir ו-switch על מנת לשלוף קבצים עם $_GET באופן אוטומטי, טעות שלי. מתנצל.

tnadav 22-12-06 21:22

ציטוט:

נכתב במקור על ידי psycho (פרסם 393045)
נשמה, כמה מניפולציות על ה משתנה שמתקבל ב GET וישר רץ ל INCLUDE ואני נחשף לכלכך הרבה פירצות אבטחה.

לא עדיף פשוט לעבוד נטו עם מסד?
או במקרה הכי גרוע ובא לי להשקיע עוד דקה ולעבוד עם MOD REWRITE

ואיזה מניפולציות?..
אתה יודע מה? הנה קוד שאני מביא לך ותמצא לו פירצה:
PHP קוד:

<?php
include("db.php"); //connecting to DataBase!
//------------------------------------------------------------
$query mysql_query("SELECT `acts` FROM `sitedna`");

while(
$info=mysql_fetch_array($query))
    
$acts[] = $info['acts'];
//------------------------------------------------------------
if(in_array($_GET['act'], $acts)
{    
    if(
file_exists($_GET['act'].".php")
        include(
$_GET['act'].".php");
}
?>

כמו שאתה רואה, קוד פשוטף בלי שטויות של תחזוק.
תמצא חור אבטחה, אני יתקן, תמצא עוד אחד, אני יתקן...

RS324 22-12-06 21:43

ציטוט:

נכתב במקור על ידי tnadav (פרסם 393069)
ואיזה מניפולציות?..
אתה יודע מה? הנה קוד שאני מביא לך ותמצא לו פירצה:
PHP קוד:

<?php
include("db.php"); //connecting to DataBase!
//------------------------------------------------------------
$query mysql_query("SELECT `acts` FROM `sitedna`");

while(
$info=mysql_fetch_array($query))
    
$acts[] = $info['acts'];
//------------------------------------------------------------
if(in_array($_GET['act'], $acts)
{    
    if(
file_exists($_GET['act'].".php")
        include(
$_GET['act'].".php");
}
?>

כמו שאתה רואה, קוד פשוטף בלי שטויות של תחזוק.
תמצא חור אבטחה, אני יתקן, תמצא עוד אחד, אני יתקן...

אם REGISTER_GLOBALS דולקים אז כן יכולה להיות לך בעיה..

אבל נדלק על הקטע הזה...
מה הרעיון פה... בכל מקרה אתה צריך לכתוב את כל ה ACT האפשריים - אז פשוט תדחוף את זה ב SWITCH

מבחינה של יעילות זה גם לא בדיוק יותר יעיל מה SWITCH הפשוט
אתה מושך מהמסד. יוצר מערך ואחרי זה אתה מחפש בכל המערך עבור הערך.

אהה וגם לא טיפלת במקרה שה ACT לא מורשה...אין לך שום דבר מוגדר כ DEAFULT....

tnadav 22-12-06 21:59

ציטוט:

נכתב במקור על ידי RS324 (פרסם 393090)
אם REGISTER_GLOBALS דולקים אז כן יכולה להיות לך בעיה..

אבל נדלק על הקטע הזה...
מה הרעיון פה... בכל מקרה אתה צריך לכתוב את כל ה ACT האפשריים - אז פשוט תדחוף את זה ב SWITCH

מבחינה של יעילות זה גם לא בדיוק יותר יעיל מה SWITCH הפשוט
אתה מושך מהמסד. יוצר מערך ואחרי זה אתה מחפש בכל המערך עבור הערך.

אהה וגם לא טיפלת במקרה שה ACT לא מורשה...אין לך שום דבר מוגדר כ DEAFULT....

לא טיפלתי בזה כי כתבתי משהו ב- NotePed ב- 2 דקות מתוך לחץ שעוד שניה מתחיל ארץ נהדרת :P

אני לא אמרתי שזה יותר יעיל, אמרתי שזה יותר קל לתחזוק, והבעיה ב- Switch זה לתחזק אותו, כשזה נמצא במסד נתונים יותר קל, ואפשר גם להוסיף עוד כל מיני דברים נחמדים כמו הרשאות, וזה למה אני חושב שזה עדיף מ- Switch.

WebProject 22-12-06 22:38

לא ממש יעיל מה שעשית, עדיף switch, ואגב, "להשתיק" את הinclude? מה זה אמור להגיד למשתמשים שיקראו את זה? פשוט, התו הזה, הוא בעצם מקביל למספר פונקציות שקיימות כמו error_reporting וכו', ובמקרה של ארור, הוא לא מציג אותו, השוני פה שזה רק לפונקצייה של האינקלוד.

:)

SDF 22-12-06 23:33

ציטוט:

נכתב במקור על ידי Tomer (פרסם 392863)
נתחיל בזה ש include סה"כ יצרף את הקוד לדף, ולא יציג לך אותו.
דבר שני, incldue לא יכול לגשת לתיקיות שאתה לא יכול, וגם לא יכול להוסיף דפים מחוץ לתיקיית ה public_html.

זה רק יצרף את הקוד, אבל זה כבר מקרב את הפורץ הפוטנציאלי צעד נוסף אלייך.
רוב השרתים רצים עם mod_php, ז"א כל סקריפטי הPHP רצים תחת היוזר שהapache רץ תחתיו
www או apache או כל שטות אחרת, כדי שהסקריפטים של כל היוזרים יעבדו, הסקריפטים הם בד"כ ב777 (ז"א קריא ע"י others). שזאת פירצה בפני עצמה.

PHP קוד:

<?php
// מציג את היוזר שהסקריפט רץ תחתיו
$processUser posix_getpwuid(posix_geteuid());
print 
"I'm running uder: <b>" $processUser['name'] . "</b><br>\n";
// מציג את היוזר שהקובץ שייך לו
print "File owned by: <b>" get_current_user() . "</b><br>\n";
?>

בקיצור, ברגע שאני סקריפט PHP, אני יכול לגשת לאן שהאפצ'י יכול לגשת, וזה בערך לכל תיקיות הווב של כל המשתמשים.
וככה זה ברוב ה"חברות".

null 23-12-06 12:36

למה לא לבנות מערך עם שמות של עמודים קיימים,
[ או לקלוט את העמודים מתוך המסד למערך ]

ואז כשמקבלים משהו, לבדוק אם הוא קיים במערך,
אם כן אז להציג, אם לא אז לשמור פרטים לטיפול |winky|

עריכה:
אני רואה שמישהו כבר הציעה את זה :)


כל הזמנים הם GMT +2. הזמן כעת הוא 04:35.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ