ارسال اطلاعات به کوئری بدون استفاده از تگ input
بعد از سالیان سال درود
حقیقتش من از هیدن فیلد استفاده میکنم اما این راه از طریق inspect مرورگر قابل هک هست و کاربر میتونه هیدن رو به تکست تبدیل کنه و مقدار دیگه ای رو به دیتابیس بفرسته
چطور ممکنه بدون هیچ تگ input و بدون hidden field بشه این مقدار رو به کوئری post کرد؟
سپاس ویژه
نقل قول: ارسال اطلاعات به کوئری بدون استفاده از تگ input
سلام
هر دیتایی که از سمت کاربر ارسال بشه قابل تغییر است. مگر اینکه
1. دیتا را با یک اندیس رندم در سشن ذخیره کنید و فقط اندیس آن را در فیلد مخفی قرار دهید.
2. یا اینکه دیتای داخل فیلد هیدن را امضا کنید مثلا از jwt استفاده کنید. ( در این روش دیتا برای کاربر قابل نمایش است اما به انتهای دیتا یک عبارت به عنوان امضا اضافه شده است که در سمت سرور قابل بررسی است در صورت تغییر داده این امضا اعتبار خود را از دست می دهد)
3. دیتا را با یک الگوریتم معین کد کنید و در فیلد هیدن قرار دهید و در سمت سرور دیکد کنید.
نقل قول: ارسال اطلاعات به کوئری بدون استفاده از تگ input
نقل قول:
نوشته شده توسط
MohammadGh2011
بعد از سالیان سال درود
حقیقتش من از هیدن فیلد استفاده میکنم اما این راه از طریق inspect مرورگر قابل هک هست و کاربر میتونه هیدن رو به تکست تبدیل کنه و مقدار دیگه ای رو به دیتابیس بفرسته
چطور ممکنه بدون هیچ تگ input و بدون hidden field بشه این مقدار رو به کوئری post کرد؟
سپاس ویژه
برای چه موردی دارید استفاده میکنید؟
نقل قول: ارسال اطلاعات به کوئری بدون استفاده از تگ input
نقل قول:
نوشته شده توسط
ali_sed
سلام
هر دیتایی که از سمت کاربر ارسال بشه قابل تغییر است. مگر اینکه
1. دیتا را با یک اندیس رندم در سشن ذخیره کنید و فقط اندیس آن را در فیلد مخفی قرار دهید.
2. یا اینکه دیتای داخل فیلد هیدن را امضا کنید مثلا از jwt استفاده کنید. ( در این روش دیتا برای کاربر قابل نمایش است اما به انتهای دیتا یک عبارت به عنوان امضا اضافه شده است که در سمت سرور قابل بررسی است در صورت تغییر داده این امضا اعتبار خود را از دست می دهد)
3. دیتا را با یک الگوریتم معین کد کنید و در فیلد هیدن قرار دهید و در سمت سرور دیکد کنید.
درود بر شما
من میخوام کلا فیدن فیلد نباشه دیگه ، وقتی کد هم بکنم باز میتونه هیدن فیلد رو در بیاره و مقدار دیگه ای رو بفرسته به سمت سرور
من جای هیدن فیلد متغیر گذاشتم ولی فراخوانی نمیشد. session گذاشتم نشد
لطفا با کد توضیح بدید ببینم
ممنون
نقل قول: ارسال اطلاعات به کوئری بدون استفاده از تگ input
نقل قول:
نوشته شده توسط
cpuram
برای چه موردی دارید استفاده میکنید؟
درود بر شما
بنده تو صفحه اطلاعات جدول رو از تیبل میخونم بعد یک سری تغییرات داخلش انجام میدم و سپس با فشردن باتن اون اطلاعات تغییر کرده insert میشه در یک تیبل دیگه
نقل قول: ارسال اطلاعات به کوئری بدون استفاده از تگ input
نقل قول: ارسال اطلاعات به کوئری بدون استفاده از تگ input
input hidden استفادش چیه ؟
اگه می خواید تغییری روی بخشی از اطلاعات انجام نشه اصلا چرا همه ی داده هایی که کاربر می فرسته رو داخل جدول جدیدتون درج می کنید می تونید از همون جدولی که الان دارید می خونید اطلاعاتی که باید تغییر نکنه رو بخونید و درج کنید
نقل قول: ارسال اطلاعات به کوئری بدون استفاده از تگ input
نقل قول:
نوشته شده توسط
peymang
input hidden استفادش چیه ؟
اگه می خواید تغییری روی بخشی از اطلاعات انجام نشه اصلا چرا همه ی داده هایی که کاربر می فرسته رو داخل جدول جدیدتون درج می کنید می تونید از همون جدولی که الان دارید می خونید اطلاعاتی که باید تغییر نکنه رو بخونید و درج کنید
if (isset($_POST['btn_add'])) {
$query_insert = "INSERT INTO All_Orders(id_Customer,Flname_Customer, )
VALUES (N'$_POST[id_Hidden]', N'$_POST[flname_Hidden]' )";
mysqli_query($db, $query_insert
}
کد HTML:
<form method="post" >
<input type="hidden" name="id_Hidden">
<input type="hidden" name="flname_Hidden">
<button type="submit" class="btn btn-danger " name="btn_add" </button>
</form
درود بر شما
ببین عزیز مثلا کد بالا ، من دارم یک سری تغییرات رو فیلدها توسط فیلدهای دیگه انجام میدم و مقدارش ریخته میشه تو هیدن فیلد و سپس POST میشه بالا که Insert شه. حالا نمیخوام از هیدن فیلد استفاده کنم که از طریق inspect قابل تغییر باشه
راه حل چیه؟
لطفا نمونه کد برام بیار ممنون
نقل قول: ارسال اطلاعات به کوئری بدون استفاده از تگ input
نقل قول: ارسال اطلاعات به کوئری بدون استفاده از تگ input
خب دوست گرامی یه المنت با خاصیت هیدن زمانی کاربرد داره که ما دیتایی رو در حد یک کلید می خواهیم در اون بزاریم تا موقت برای ما نگهش داره نه اینکه دیتا های حساس ما رو نگه داری کنه برای نگهداری موارد حساس بهتره از سشن استفاده کنید به نظرم نباید فرد بتونه با تغییر در این فیلد به ما آسیب بزنه از طرف دیگه شما باید و باید هر دیتایی که از سمت کاربر میاد رو چک کنید مهم نیست اونو رمز کرده باشید یا هر کار دیگه باید و باید اون رو یک بار از نظر وجود موارد مشکل دار چک کنید
نقل قول: ارسال اطلاعات به کوئری بدون استفاده از تگ input
اگه میخای به جواب برسی باید درست توضیح بدی که برای چکاری میخای انجام بدی و چی تو فیلده مخفی هست و چکاری قراره روش انجام بشه
ولی در کل جوابت اینه که نباید از فیلد هیدن استفاده کنی اطلاعات حساسی که کاربر نباید بهشون دست بزنه رو هیچوقت تو فیلد هیدن نباید گزاشت
نقل قول: ارسال اطلاعات به کوئری بدون استفاده از تگ input
درود بر شما
@plague
بزرگواران من خودم میدونم که نباید بریزم تو هیدن که اومدم اینجا
شما فقط لطف کنید بمن بفرمائید جای هیدن فیلد تو کدی که گذاشتم چی باید بزارم
برنامه ای رو فرض کن مثل ماشین حساب که طرف اعداد با علائم محاسباتی رو انتخاب میکنه و در نهایت حاصل بدست اومده باید در دیتابیس ذخیره بشه این حاصل بدست اومده رو چطور میشه در همون صفحه که محاسبات انجام میشه پاس داد به کد sql
@sara_aryanfar
عزیز سشن زدم نشد و نمیشناسه لطفا یک مثال بزنید رو کدی که قرار دادم و سشن رو پاس بدید به کد insert
همچنین متغیر هم تعریف کردن در قسمت هیدن فیلد اما جواب نمیده
نقل قول: ارسال اطلاعات به کوئری بدون استفاده از تگ input
الان بازم مشکلی هست تو طرح سوال؟
نقل قول: ارسال اطلاعات به کوئری بدون استفاده از تگ input
فرض می کنیم وقتی کاربر دکمه سابمیت را کلیک می کند محاسبات انجام میشود و محتوای فرم با متد آجاکس ارسال می شود. می توانید از روش زیر استفاده کنید:
توجه: کدها تست نشده اند.
کد HTML:
<form method="post" action="/test.php" >
<input type="text" name="other-field1">
<input type="text" name="other-field2">
<input type="text" name="other-field3">
<input type="submit" class="btn btn-danger " name="btn_add" value="submit" />
</form>
<script>
$("form").submit(function( event ) {
event.preventDefault();
var url = form.attr("action");
var formData = $(form).serializeArray();
//calculate hidden values
hiddenValue1 = calculateHiddenValue1();
hiddenValue2 = calculateHiddenValue2();
formData.push({hiddenValue1: hiddenValue2, hiddenValue2: hiddenValue2});
$.post(url, formData)
.done(function (response) {
alert(response);
})
.fail(function() {
alert( "error" );
});
});
</script>
به شما توصیه می کنم محاسبات را سمت سرور انجام دهید تا مطمئن شوید دیتا دستکاری نشده است. شما میتوانید فیلد هیدن را حذف کنید و به روش دیگری دیتا را ارسال کنید ولی باز هم کاربر میتواند با تغییراتی در برنامه محتوای متغییر را تغییر دهید.
نقل قول: ارسال اطلاعات به کوئری بدون استفاده از تگ input
نقل قول:
نوشته شده توسط
ali_sed
فرض می کنیم وقتی کاربر دکمه سابمیت را کلیک می کند محاسبات انجام میشود و محتوای فرم با متد آجاکس ارسال می شود. می توانید از روش زیر استفاده کنید:
توجه: کدها تست نشده اند.
کد HTML:
<form method="post" action="/test.php" >
<input type="text" name="other-field1">
<input type="text" name="other-field2">
<input type="text" name="other-field3">
<input type="submit" class="btn btn-danger " name="btn_add" value="submit" />
</form>
<script>
$("form").submit(function( event ) {
event.preventDefault();
var url = form.attr("action");
var formData = $(form).serializeArray();
//calculate hidden values
hiddenValue1 = calculateHiddenValue1();
hiddenValue2 = calculateHiddenValue2();
formData.push({hiddenValue1: hiddenValue2, hiddenValue2: hiddenValue2});
$.post(url, formData)
.done(function (response) {
alert(response);
})
.fail(function() {
alert( "error" );
});
});
</script>
به شما توصیه می کنم محاسبات را سمت سرور انجام دهید تا مطمئن شوید دیتا دستکاری نشده است. شما میتوانید فیلد هیدن را حذف کنید و به روش دیگری دیتا را ارسال کنید ولی باز هم کاربر میتواند با تغییراتی در برنامه محتوای متغییر را تغییر دهید.
درود بر شما
غیر از اجکس راه حل دیگتون چیه
مثلا ذخیره در متغیر یا همین سشن ها
لطفا از اینها هم مثال بیارید
سپاس فراوان از شما
نقل قول: ارسال اطلاعات به کوئری بدون استفاده از تگ input
نقل قول:
نوشته شده توسط
MohammadGh2011
درود بر شما
غیر از اجکس راه حل دیگتون چیه
مثلا ذخیره در متغیر یا همین سشن ها
لطفا از اینها هم مثال بیارید
سپاس فراوان از شما
شما میتوانید قبل از سابمیت شدن فرم فیلد مورد نظر را به فرم اضافه کنید و بعد ارسال کنید:
کد HTML:
$("#form").submit( function(eventObj) {
$("<input />").attr("type", "hidden")
.attr("name", "something")
.attr("value", "something")
.appendTo("#form");
return true;
});