prevent insert into statments

flenger

New member
prevent insert into statments

שלום לכולם
רציתי לדעת האם יש דרך למנוע INSERT INTO לטבלה
שלא הגיע PROCEDURE
אם יש בכלל דרך כזאת
אני בלי קשר ממשיך לחפש בתקווה למצוא משהו כזה

תודה מראש לעוזרים
 

flenger

New member
אוקי .. יש לי כיוון

אך אולי אני עושה משהו לא נכון ואשמח אם מישהו יוכל לכוון אותי
לפי מה שהצלחתי מהפורום הזה
http://stackoverflow.com/questions/2533493/force-insert-only-via-stored-procedure
ניתן לבצע GRANT , REVOKE , DENY
מה שאני לא מצליח להבין זה שאני מבצע את אותה חסימה לUSER מסויים ואפילו ל PUBLIC
ועדיין אני מצליח להכניס נתונים בINSERT INTO פשוט
*גם אחרי שסגרתי את הSESSION והתחברתי מחדש שום דבר לא השתנה
 

גרי רשף

New member
מה בדיוק עשית?

אני משער שאתה אדמיניסטרטור.
הורדת את ההרשאות של User מסויים (נניח שקוראים לו Geri) וכעת הוא לא יוכל לכתוב לטבלה.
אתה כן תוכל כי חסמת רק אותו.
בדקת אם הוא מצליח לכתוב לטבלה? כיצד?
אם לא לכך התכוונת - למה כן?
 

flenger

New member
זה מה שעשיתי

מה שעשיתי זה בדיוק כמו שאמרת
התחברת לDB שלי עם ההרשאות שלי שהן כמובן ADMIN הרצתי את הפקודה
DENY INSERT ON MyTable TO Geri לצורך הדוגמא
וכדי לבדוק ההרשאה עובדת
התחברת לSERVER עם GERI ובדקתי האם אפשר לבצע INSERT והחסימה לא התבצעה
כך שאני בטוח שעשיתי משהו לא נכון
 

גרי רשף

New member
לא ברור מה השתבש..

1. לאחר שאתה מתחבר בתור Geri (או מי שזה לא יהיה), וודא שזה הוא ולא אתה:
Select User_Name(),
SUSer_Name()


2. האם ההרשאות לפי מה שכתוב בשליפה הבאה נכונות (חפש את הטבלה המתאימה)?
Select Object_Name(major_id) [major_id1],
User_Name(grantee_principal_id) [grantee_principal_id],
SUser_Name(grantor_principal_id) [grantor_principal_id],
permission_name,
state_desc,
class_desc
From sys.database_permissions
Order By 1;
 

ni5ni

New member
אפשר בעזרת TRIGGER

תכתוב trigger שבודק לפני כל insert את המקור של ה-insert הזה ודוחה אותו אם הוא בוצע ישירות.
 

flenger

New member
מה שאתה אומר הוא לא מדוייק

אני מניח שאתה מתכוון ל INSTEAD OF INSERT
שימוש בTRIGGERS במקרה הזה הוא לא נכון ( לפחות לדעתי )
מה שרציתי לעשות זה למנוע INSERT INTO רגיל .
כדי למנוע SQL INJECTIONS או הכנסת נתונים באופן לא מבוקר לטבלאות.

בסוף הסתדרתי , בעזרת פעולות GRANT ו DENY
 
למעלה